指向未初始化变量的指针

Pointer points to uninitialized variable

在下面的程序中,ptr指向未初始化的变量x。在打印ptr之前,我已经将10赋值给了ptr并打印了。

#include <stdio.h>

int main()
{
    int *ptr;
    int x;

    ptr = &x;
    *ptr = 10;

    printf(" x = %d\n", x);
    printf(" *ptr = %d\n", *ptr);
}

ptrx 都打印出正确的值。但是,我有疑问,它是定义的行为吗?

据我了解,这是已定义的行为,因为在写入之前不需要初始化内存。

是的,是的。您为 ptr 分配了一个有效值,然后使用间接方式为 x.

分配了一个有效值

x这样的变量的地址和它的值是不同的东西。分配存储后,无论变量中的值如何,取地址总是定义明确的。

是的,因为当您声明 x 时,占位符/内存将可用 给你.

ptr = &x; *ptr = 10; 代码实际上意味着

x =10