以下是引用litao31415在2014-10-6 00:08:35的发言:
如题。
还有另外一个问题:
int a=100;
int *p=NULL;
p=&a;
在判断*p==100前需要判断p是否为NULL吗?或者说此时的p有可能是NULL吗?恳请大神指点
你这里的代码,与下面的等效:
int a = 100;
int* p = &a;
这样,p是有具体指向的,即已初始化,不用判断是否为NULL,因为它已经被后面的赋值语句冲掉了前面的NULL赋值。
至于后面的*p == 100问题,不在于是否要判断p是否为NULL,隐患在若a没有初始化的时候,这样解引用得到的*p值是随机的垃圾数据,通常编译器不进行这种未初始化检测(个别编译器有这种功能)。指针的问题,不是仅仅由它自身造成的,还涉及它所指向的对象!