C语言指针多重判断问题

拉菲一箱 发布于 2011/10/18 09:03
阅读 798
收藏 0

C语言里指针判断是:

1、跟NULL判断

2、if(!p)判断

 

这2种优势优缺点?看linux上程序都是第二种嘛 个人喜欢第一种

加载中
0
zhaowenwei
zhaowenwei
本人很懒 喜欢第二种
0
Jackarain
Jackarain
我一直都使用第二种, 不知道为什么...

貌似记得在C++之父的网站上, 表示他很反对第一种写法. 当然c和c++有区别.

focusfree
focusfree
@小香蕉 测试
小香蕉
小香蕉
帅哥
0
Lunar_Lin
Lunar_Lin
纯字面区别.  汇编应该不会有区别. 本人1,2都有, 1偏多.
0
Jackarain
Jackarain
如果是c++, 那么第二种的好处就应该是, 如果是智能指针的判断, 那么会更合理.

boost::shared_ptr ptr;
if (ptr == NULL) { ... }

if (!ptr) { ... }
是不是有不一样的感觉呢?
0
拉菲一箱
拉菲一箱

引用来自“Jack.arain”的答案

如果是c++, 那么第二种的好处就应该是, 如果是智能指针的判断, 那么会更合理.

boost::shared_ptr ptr;
if (ptr == NULL) { ... }

if (!ptr) { ... }
是不是有不一样的感觉呢?
没感觉出来
Jackarain
Jackarain
大家都知道NULL在很多系统中定义为整数0. 所以, 从语义上来讲, 第一个给人的感觉就像boost::shared_ptr对象和0比较, 是不是有让人误以为boost::shared_ptr是整数类型? 如果NULL不是定义为0或别的, 那么NULL定义不同, 则判断结果不同, 显然可能有错, 而使用 if (!ptr) 就不会有这个问题.
0
拉菲一箱
拉菲一箱
NULL可以自定义 觉得更加灵活点
返回顶部
顶部