C语言中为什么会有NULL?

gra*_*olf 3 c

NULLC语言中为什么有a ?是否存在仅简单文字0不能完全相同的上下文?

dbu*_*ush 5

0实际上,您可以在任何需要使用 的地方使用文字NULL

C 标准第 6.3.2.3p3 节规定:

值为 0 的整型常量表达式或此类转换为类型的表达式void *称为空指针常量。如果将空指针常量转换为指针类型,则生成的指针(称为空指针)保证与任何对象或函数的指针比较不相等。

第 7.19p3 节指出:

宏是:

NULL
Run Code Online (Sandbox Code Playgroud)

它扩展为实现定义的空指针常量

So0符合空指针常量的要求,与(void *)0和一样NULL。然而,首选使用NULL,因为它使读者更清楚地看到正在使用空指针而不是整数值 0。