prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 5.13

Q这很奇怪。NULL保证是0,但空指针却不是?


A当“null”或“NULL”被随意使用时,可能有几种情况被提及

  1. 概念性空指针,即问题 5.1 中定义的抽象语言概念。它通过...来实现。
  2. 空指针的内部(或运行时)表示,它可能不是全零,并且对于不同的指针类型可能不同。实际值只应由编译器编写者关心。C 程序的作者永远不会看到它们,因为他们使用...
  3. 空指针常量,它是一个整数常量 0 [脚注](参见问题 5.2)。它经常隐藏在...
  4. NULL宏定义中,它被#define定义为0(参见问题 5.4)。最后,作为干扰项,我们有...
  5. ASCII 空字符(NUL),它的所有位确实都是零,但除了名称外,与空指针没有必然联系;还有...
  6. “空字符串”,这是空字符串的另一种说法("")。在 C 语言中使用“空字符串”一词可能会引起混淆,因为空字符串包含一个空('\0')字符,但*不*包含空指针,这就把我们带回了原点...

换句话说,用白骑士对他在《镜中奇遇》中歌曲的描述来意译,空指针的名字是“0”,但空指针的名字叫做“NULL”(而且我们不确定空指针*到底*是什么)。

本文档使用“null pointer”(小写)来表示第 1 种含义,使用标记“0”或短语“null pointer constant”来表示第 3 种含义,并使用大写的“NULL”来表示第 4 种含义。[脚注]

其他链接:助记符

参考:H&S 节 1.3 第 325 页
《镜中奇遇》,第八章。


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管