我想了解堆棧和堆在c + +和剛開始打印測試,以瞭解它是如何工作的。得到奇怪的值的指針和一個普通的int
我寫這個代碼:
`#include <iostream>
using namespace std;
int main(){
int a;
int b;
int *c;
int *c2;
int *d{new int};
cout << &a << " a= " << a << endl;
cout << &b << " b= " << b << endl;
cout << &c << " c= " << c << endl;
cout << &c2 << " c2= " << c2 << endl;
cout << &d << " d= " << d << endl;
delete d;
return 0;
}
輸出爲:
0x7ffefad88d00一個= 124
0x7ffefad88d04 B = 0
0x7ffefad88d08 C = 0
0x7ffefad88d10 c2 = 0x 400b20
0x7ffefad88d18 d = 0xec9c20
有三件事情我不明白:
- 爲什麼值124?
- 爲什麼c值是0而不是像c2這樣的指針具有相同的語法?
- 爲什麼c大小隻是2個字節而不是4個?
由於您尚未初始化'a'和triy來打印其值,因此這是未定義的行爲 - 因此可能發生任何事情。 int的大小因編譯器而異。 – doctorlove
謝謝,但我沒有初始化b以及...爲什麼他沒有得到編譯器的價值? – adi319
0是一個完全可以接受的隨機數 – doctorlove