判断一个指针是否为空指针这个凡是学过编程语言的童鞋应该都做过的问题,而且这确实是一个简单的基本上没有考虑过的问题。今天我突然想了一下。。。(脑残征兆)
判断指针是否为空,常见的就是方法是:
if(NULL == p){};
if(p = NULL){};
if(0 == p){};
if(p == 0){};
if(!p){};
老鸟更喜欢的方法是1,5。
根据陈俞飞的博客,http://blog.csdn.net/chenyufei1013/article/details/6193295(专业),上述两种方法都没隐式类型转换,也即这两种方法是等价滴!均可。
那么在进行空指针判断时要注意什么?
丁新童鞋http://blog.sina.com.cn/s/blog_49055f91010004go.html也给出了看法,也即“可读性”。
c++之父不支持第一种方法,是因为在某些平台上null并不一定为0,可能是其他特殊字符。。。
在win32的API中if(NULL == p)不会将p误以为是bool型,而且判断过程中也不会出现将p赋空的差错。
当然如果喜欢的话也可以使用if(p == NULL)。
对bool型有倾向的请选择if(!p)吧!