私は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;
}
出力である:
C = 0
0x7ffefad88d00 = 124
0x7ffefad88d04 B = 0
0x7ffefad88d08 0x7ffefad88d10 c2 = 0x 400b20
0x7ffefad88d18 D = 0xec9c20
私は理解していない3つの事があります。値が124である理由
- は?
- なぜc値が0で、同じ構文を持つc2のようなポインタではないのですか?
- なぜCサイズは4バイトではなく2バイトですか?
'a'とtriyを初期値に設定していないので、これは未定義の動作です。何かが起こる可能性があります。 'int'のサイズは、コンパイラによって異なります。 – doctorlove
ありがとう、しかし、私はまだbをinitialised didnt ...なぜ彼はcomplier値を得るdidnt? – adi319
0は完全に許容される乱数である – doctorlove