저는 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 A = 124
0x7ffefad88d04 B = 0
0x7ffefad88d08 C = O
는이 코드를 작성 0x7ffefad88d10 c2 = 0x 400b20
0x7ffefad88d18 D = 0xec9c20
내가 이해할 수없는 3 가지가 있습니다
- 값이 124 인 이유?
- 왜 c 값이 0이고 동일한 구문을 가진 c2와 같은 포인터가 아닌가?
- 왜 C 크기가 4 바이트가 아니라 단지 2 바이트입니까?
'a'와 triy를 초기화하지 않았으므로 값이 출력되지 않습니다. 이것은 정의되지 않은 동작이므로 아무 일도 일어나지 않을 수 있습니다. 'int'의 크기는 컴파일러에 따라 다릅니다. – doctorlove
고마워,하지만 나도 initialised b ... 그는 왜 complier 값을 얻지 않았다? – adi319
0은 완벽하게 허용되는 난수 – doctorlove