我在C中写了一个简单的程序(C中的新手)
当我尝试编译这个程序时,它会被编译。
创建指向int'p'的指针并存储变量'a'
的地址当我退出指针时,它显示值0但我从未分配任何值
到我的变量那么0来自哪里?
如果我们写
int a;
它甚至在为其分配任何值之前就在内存中分配空间。
#include <stdio.h>
int main()
{
int a;
int *p = &a;
printf("%d\n", *p);
return 0;
}
编译器:clang
答案 0 :(得分:5)
未初始化变量的值为 indeterminate 。从未初始化的变量读取是undefined behaviour。所以一切都会发生。 0
也是可能的结果。
如果未初始化具有自动存储持续时间的对象 显然,它的价值是不确定的。
和
未指定的值或陷阱表示
答案 1 :(得分:2)
它不是来自任何地方!这是一个任意值。
您没有初始化a
,因此当您尝试打印其值时会发生什么情况是完全不可预测的。