指针指向未初始化的变量

时间:2017-09-11 05:36:06

标签: c pointers initialization behavior

在以下程序中,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都会打印正确的值。但是,我怀疑,是否定义了行为?

3 个答案:

答案 0 :(得分:13)

是的,确实如此。您将有效值分配给ptr,然后使用间接将有效值分配给x

x之类的变量的地址及其值是不同的东西。分配存储后,无论变量中的值如何,总是很好地定义地址。

答案 1 :(得分:2)

是的,因为当您声明x时,占位符/内存将变为可用 对你而言。

ptr = &x; *ptr = 10; 代码有效意味着

x =10

答案 2 :(得分:1)

据我所知,它是定义的行为,因为在写入内容之前没有必要初始化内存。