关于指针赋初值为NULL的问题

关于指针赋初值为NULL的问题

因为NULL本质就是0,则,一个指针变量的值为0,意味着它指向整个内存的最开始字节处,而这个地方是用户程序(APP)的禁区,不能访问,如果强行访问,则,将被OS禁止并中断这个进程执行(程序被中断)。

上述说法,不能说指针的值不能为NULL,只是说,不能对0编号开始的空间进行“访问”。即,可以令指针指向0编号区域,只要不访问就没有问题。

【软件工程】建议所有的变量(尤其是局部变量)都应该初始化为0(NULL)。这里,对于指针变量初始化为NULL的目的在于:区分垃圾数据

int *p;

int x;

if(x > 0)

p = (int *)malloc(…);

x = …;

// 在此处,无法识别p是否已经指向一段申请了的空间!

if(p是否指向了有效空间)

此时无法判断p是否指向了有效空间,为此,需要进行如下调整:

int *p = NULL;

int x;

if(x > 0)

p = (int *)malloc(…);

x = …;

if(p == NULL)

// p没有指向有效空间

else

// p指向了有效空间

猜你喜欢

转载自blog.csdn.net/weixin_42072280/article/details/82949941