在测试时NULL,我看到了很多使用的代码!var.有没有理由使用这种测试而不是更明确的测试var == NULL.if (var)对于非空项目,同样也是一个正确的测试?
oua*_*uah 11
和...之间的不同:
!var
和
var == NULL
在第二种情况下,如果编译器var不是指针类型并且NULL使用强制转换(如(void *) 0)定义,则编译器必须发出诊断.
另外(如注释中的@bitmask所指)使用NULL宏,您需要包含一个定义NULL宏的标准头.在C中的NULL宏在几个头文件中定义为方便起见(如stddef.h,stdio.h,stdlib.h,string.h,等等).
否则这两个表达式是等价的,这只是一个品味问题.使用你觉得更舒适的那个.
而你的第二个问题与上面提到的差异if (var)相同if (var != NULL).