c++ - 为什么未分配的 int 有值?

标签 c++ c pointers integer

如果我运行以下代码,它会显示一个长数字。

int i;    
int *p;    
p= &i;     
cout<<*p;

为什么未分配的 int 有值?这个值是多少?

最佳答案

指针p的值是int i的地址。您为它分配了 & 运算符的地址:p = &iint i本身没有初始化也叫默认初始化。当你用 *p 取消引用你的指针时,你会得到你未初始化的 int i 的值,它可以是任何东西。

int i 的值是解释为 int 的未初始化内存。使用未初始化的变量是未定义的行为。

如果没有指针,您也可以通过简单地执行以下操作来获得相同的行为:

int i;
cout << i;

关于c++ - 为什么未分配的 int 有值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36253397/

相关文章:

c++ - g++ undefined reference ,尽管 *.so 文件中存在符号

c++ - 降低时间复杂度

c - Mac OS 可执行文件的 DATA 段中有什么?

c++ - 获取从另一个地址指向的地址

c - 将 strtok 的指针分配给二维结构数组中的指针,所有条目都应该是唯一的,但打印出来是相同的

c - 未定义数组的默认地址是否始终是有效地址?

c++ - 插件中的 qt 信号/插槽

c++ - 我是否应该在将实现委托(delegate)给子类的类中包含成员定义?

c - 为什么 gdb 看不到 `stdio` 何时更改?

c - 从 C 中的文件读取时使用 fscanf()