C-C程序里判断为空的问题

C-C程序里判断为空的问题

瑾兮 发布于 2017-03-25 字数 160 浏览 1117 回复 3

在C语言程序里面判断为空常常通过如下两种方式:

1、跟NULL判断

2、if(!p)判断
这两种方式有区别吗? 哪种更好一些?还仅仅是个人习惯问题?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

想挽留 2017-10-04 3 楼

本人喜欢第一种,直观,可读性好。

偏爱自由 2017-09-18 2 楼

C 中 NULL 的使用没有什么强制性的要求,if(!p) 和 P==NULL(p!=NULL)这两种写法都有人在使用,不过作为写代码易读性和为了避免写代码的疏忽引起的代码错误,一边的编程规范都建议采用如下写法:if(NULL != P) 或者 if(NULL == P),这样写表意准确,知道P是一个指针、P是否为空的比较,同时可以避免因为写代码疏忽引起的错误,例如 if(P = NULL),这句在语法编译上是可以通过的,但实际代码确实一个很严重的 bug,而这种 bug 在解决的时候是很难被发现的。

清晨说ぺ晚安 2017-06-16 1 楼

其实你可以反汇编看一下,一样的,NULL 是一个标准规定的宏定义,用来表示空指针常量:
#define NULL (void*)0
对于==操作符:
可以一边是指针,一边是指向void类型的指针;或者一边是指针一边是空指针常量。
对于!操作符:
运算分量必须是一个算术类型或指针,如果运算分量等于0,那么结果为1,否则结果为0。

用!p可能使得代码简短一些,但是在某些情况下P==NULL这样的判断可能更加直观一点。