指针指向未初始化的变量

Jay*_*esh 4 c pointers behavior initialization

在以下程序中,ptr指向未初始化的变量x.在打印之前ptr,我已经分配10ptr和打印.

#include <stdio.h>

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

    ptr = &x;
    *ptr = 10;

    printf(" x = %d\n", x);
    printf(" *ptr = %d\n", *ptr);
}
Run Code Online (Sandbox Code Playgroud)

双方ptrx打印正确的值.但是,我怀疑,是否定义了行为?

Sto*_*ica 13

是的.您为其分配有效值ptr,然后使用间接分配有效值x.

变量的地址x和它的值是不同的东西.分配存储后,无论变量中的值如何,始终都可以很好地定义地址.