我玩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
不是。