6.1 臭名昭著的空指針到底是什麼?

語言定義中說明, 每一種指針類型都有一個特殊值 --- ``空指針" ---  它與同類型的其它所有指針值都不相同, 它 ``與任何對像或函數的指針值都不相等"。 也就是說, 取地址操作符 & 永遠也不能得到空指針, 同樣對 malloc() 的成功調用 也不會返回空指針, 如果失敗, malloc() 的確返回空指針, 這是空指針的典型用法: 表示 ``未分配" 或者 ``尚未指向任何地方" 的指針。

空指針在概念上不同於未初始化的指針。空指針可以確保不指向任何對像或函數; 而未初始化指針則可能指向任何地方。參見問題 1.10、 7.1 和  7.26

如上文所述, 每種指針類型都有一個空指針, 而不同類型的空指針的內部表示可能 不盡相同。儘管程序員不必知道內部值, 但編譯器必須時刻明確需要那種空指針, 以便在需要的時候加以區分 (參見問題 5.2、 5.5 和   5.6)。

參考資料: [K&R1, Sec. 5.4 pp. 97-8]; [K&R2, Sec. 5.4 p. 102]; [ISO, Sec. 6.2.2.3]; [Rationale, Sec. 3.2.2.3]; [H&S, Sec. 5.3.2 pp. 121-3]。

翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)