【发布时间】:2011-09-19 08:23:50
【问题描述】:
我在 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;
如何获取 a 的指针可以改变它的值? 当我们初始化变量时,我们分配空间,一些位,它们可以是任何东西,但是“p = &a”真的会改变这个空间中的位吗?
【问题讨论】:
-
有趣。在 Fedora 15 x64_86 下的 G++ 4.6.0 下也会发生类似的情况。
-
提高项目设置中的警告级别。这将检测未初始化变量的使用情况。
-
没有。不对。
未初始化的整数应该是0
标签: c++ visual-studio-2010 pointers