我对以下代码段有疑问:
#include <stdio.h>
int main() {
int x, *p = &x, *m = p;
//p = NULL;
//*p = NULL;
printf("%d\n", *m);
return 0;
}
当我设置p = NULL并运行程序时,我得到一个不确定的值,但如果我设置* p = NULL,程序将打印0.我意识到两行之间的区别是设置指针p = NULL vs对象p指向= NULL,但不理解为什么输出不同。
答案 0 :(得分:0)
第一行代码使x
为整数,p
为指向x
的指针,m
为指针,其值为p
},这是x
。
将p
设置为NULL
对m
的值没有影响,x
指向*p
。
将NULL
设置为x
会将p
设置为NULL,因为x
指向m
。由于x
也指向x
,因此将*m
设置为NULL会导致x
({{1}}的值)为零。