在C中,似乎有零各个值之间的差- NULL,NUL和0.
我知道ASCII字符的'0'计算结果为48或0x30.
该NULL指针通常定义为:
#define NULL 0
Run Code Online (Sandbox Code Playgroud)
要么
#define NULL (void *)0
Run Code Online (Sandbox Code Playgroud)
另外,也有似乎评价的NUL人物.'\0'0
是否有时候这三个值不相等?
这在64位系统上也是如此吗?
检查指针是不是NULL通过简单写入if(pointer)或我必须使用它是否安全if(pointer != NULL)?
在终止字符串时,在我看来逻辑上char c=0等同于char c='\0',因为"null"(ASCII 0)字节是0,但通常人们倾向于这样做'\0'.这纯粹是出于偏好还是应该是一个更好的"实践"?
什么是首选?
编辑: K&R 说:"字符常量'\0'表示值为零的字符,空字符.'\0'经常编写而不是0强调某些表达式的字符性质,但数值只是0.
c ×2
null ×2
pointers ×2
ansi-c ×1
c++ ×1
c-strings ×1
if-statement ×1
null-pointer ×1
string ×1