나는 IT가 발생하는 이유를 설명해주십시오 초기화되지 않은 변수에 포인터를 할당하면 값이 변경됩니까?
VisualStudio2010
에서 C++와 함께 연주 해요 :int a, b;
int *p, *q;
cout << a << " " << b;
인쇄를 "0 0". 자, 이해할 수있는 정수입니다. 초기화되지 않은 정수는 0이어야합니다. 내가 기본에서 초기화되지 않은 변수 그 변화 값으로 포인터를 할당하는 경우 하지만
int a, b;
int *p, *q;
p = &a;
cout << a << " " << b;
출력은 그래서 "1792816880 0"
입니다. 왜?
편집 설명 : 문제는 의 포인터를 점점 그 가치를 변경할 수있는 방법을 초기화되지 않은 변수
int a; int *p;
cout << a; // would be 0, because it's loacal variable
p = &a;
cout << a; //not 0;
의 가치에 대해 아니었다? 우리가 변수를 초기화 할 때, 우리는 공간을 할당하고, 어떤 비트를 지정할 수 있지만, "p = &"실제로이 공간에서 비트를 변경합니까?
흥미 롭습니다. Fedora 15 x64_86에서 G ++ 4.6.0에서도 유사한 점이 발생합니다. – trojanfoe
프로젝트 설정에서 경고 수준을 높이십시오. 그것은 초기화되지 않은 변수의 사용법을 감지합니다. – Stephan
아니요.
–