我玩C++在VisualStudio2010分配指向未初始化變量的指針會改變它的值嗎?
請解釋爲什麼會發生:
int a, b;
int *p, *q;
cout << a << " " << b;
打印出 「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 = & a」它實際上是否改變了這個空間中的位?
有趣。在Fedora 15 x64_86的G ++ 4.6.0下也會出現類似的情況。 – trojanfoe
增加項目設置中的警告級別。這將檢測未初始化變量的用法。 – Stephan
不是。