如何将0分配给变量'a'?

0 c pointers

我用C写了一个简单的程序(C中的新手)

当我尝试编译这个程序时,它会被编译.

创建指向int'p'的指针并存储变量'a'的地址

当我derefernce指针它显示值0但我从未分配任何值

到我的变量那么0来自哪里?如果我们写 int a; 它,它甚至在为它分配任何值之前在内存中分配空间.

#include <stdio.h>

int main()
{
    int a;
    int *p = &a;
    printf("%d\n", *p);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译器:clang

P.P*_*.P. 5

未初始化变量的值是不确定的.从未初始化的变量读取是未定义的行为.所以一切都会发生.0也是可能的结果.

C11标准说:

如果未显式初始化具有自动存储持续时间的对象,则其值不确定.

不确定值定义为:

要么是未指定的值,要么是陷阱表示