如何在C中NULL与0不同?

时间:2018-05-13 20:33:24

标签: c null zero

如果这三行是stdio.h中唯一提到NULL的时间,那么NULL如何与0不同,最重要的是什么告诉编译器NULL实际上是无效地址? 谈论C,可能在其他库中,如在iostream中,NULL的定义不同。

0085 #ifndef NULL
0086 #define NULL 0
0087 #endif

2 个答案:

答案 0 :(得分:2)

对于编译器,NULL在用作指针时与0无法区分。该标准实际上将0定义为空指针值,标准库只引入了一个方便的宏NULL定义为空指针值(通常为0((void*)0)) ,以便您可以在代码中使用它以获得更好的可读性和表达意图。但NULL本身并没有什么特别之处;这是相关的0

答案 1 :(得分:1)

对于编译器,所有0NULL'\0'都映射到相同的值。但是,从可读性的角度来看,您可能希望根据上下文使用适当的值,以明确您尝试执行的操作并提高代码审核和审核的效率。