如果NULL和0作为空指针常数是等价的,那我到底该用哪一个

2023-07-06   


许多程序员认为在所有的指针上下文中都应该使用NULL, 以表明该值应该被看作指针。另一些人则认为用一个宏来定义0, 只不过把事情搞得更复杂, 反而令人困惑。因而倾向于使用未加修饰的0。没有正确的答案。C 程序员应该明白, 在指针上下文中NULL 和0 是完全等价的, 而未加修饰的0 也完全可以接受。任何使用NULL (跟0 相对) 的地方都应该看作一种温和的提示, 是在使用指针; 程序员(和编译器都) 不能依靠它来区别指针0 和整数0。在需要其它类型的0 的时候, 即便它可能工作也不能使用NULL, 因为这样做
   发出了错误的格式信息。(而且, ANSI 允许把NULL 定义为((void *)0), 这在非指针的上下文中完全无效。特别是, 不能在需要ASCII 空字符(NUL) 的地方用NULL。如果有必要, 提供你自己的定义
   #define NUL ’’


相关内容:

  1. NULL是什么,它是怎么定义的
  2. 用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
  3. 在使用非全零作为空指针内部表达的机器上, NULL是如何定义
  4. 怎样在程序里获得一个空指针
  5. 在C语言中"指针和数组等价"到底是什么意思?
  6. 空指针到底是什么