prev up next   top/contents search

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

Q这个臭名昭著的空指针究竟是什么?


A语言定义规定,对于每种指针类型,都有一个特殊的值——“空指针”——该值可与其他所有指针值区分开来,并且“保证与指向任何对象或函数的指针不相等”。也就是说,空指针明确地不指向任何地方;它不是任何对象或函数的地址。取地址运算符&永远不会产生空指针,成功调用malloc也不会。[脚注]malloc失败时会返回空指针,这是空指针的典型用法:作为具有其他含义的“特殊”指针值,通常表示“未分配”或“尚未指向任何地方”。)

空指针在概念上与未初始化指针不同。空指针已知不指向任何对象或函数;未初始化指针可能指向任何地方。另请参阅问题 1.307.17.31

如上所述,每种指针类型都有一个空指针,并且不同类型空指针的内部值可能不同。尽管程序员无需了解内部值,但编译器必须始终获悉需要哪种类型的空指针,以便在必要时进行区分(请参阅问题 5.25.55.6)。

参考文献:K&R1 第 5.4 节 pp. 97-8
K&R2 第 5.4 节 p. 102
ISO 第 6.2.2.3 节
Rationale 第 3.2.2.3 节
H&S 第 5.3.2 节 pp. 121-3


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

Eskimo North 托管