C指针基础知识

时间:2018-02-14 22:12:38

标签: pointers

我对以下代码段有疑问:

#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,但不理解为什么输出不同。

1 个答案:

答案 0 :(得分:0)

第一行代码使x为整数,p为指向x的指针,m为指针,其值为p },这是x

的地址

p设置为NULLm的值没有影响,x指向*p

NULL设置为x会将p设置为NULL,因为x指向m。由于x也指向x,因此将*m设置为NULL会导致x({{1}}的值)为零。