语言定义中说明,
每一种指针类型都有一个特殊值—— “空指针” —— 它与同类型的其它所有指针值都不相同, 它“与任何对象或函数的指针值都不相等”。
也就是说,
取地址操作符& 永远也不能得到空指针,
同样对malloc() 的成功调用也不会返回空指针,
如果失败,
malloc() 的确返回空指针, 这是空指针的典型用法:表示“未分配” 或者“尚未指向任何地方” 的指针。
空指针在概念上不同于未初始化的指针。
空指针可以确保不指向任何对象或函数;
而未初始化指针则可能指向任何地方。
参见问题1.10、7.1 和7.26。
如上文所述, 每种指针类型都有一个空指针, 而不同类型的空指针的内部表示可能不尽相同。
尽管程序员不必知道内部值, 但编译器必须时刻明确需要那种空指针, 以便在需要的时候加以区分(参见问题5.2、5.5 和5.6)。