【发布时间】:2017-09-11 05:36:06
【问题描述】:
在以下程序中,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);
}
ptr 和 x 都打印正确的值。但是,我有疑问,这是定义的行为吗?
【问题讨论】:
-
请阅读。为什么你认为它会被定义或未定义?你的研究工作在哪里?你发现了什么你不明白的地方?添加这些是一个很好的问题,没有冒犯。
-
只有当您访问未初始化变量的值时,才会调用可能定义不明确的行为。
-
您能否解释一下“在取消引用
ptr之前,我已将10分配给ptr并取消引用它”是什么意思。 ?将10分配给*ptr(不是ptr是取消引用。在取消引用之前先取消引用?
标签: c pointers initialization behavior