5.8为什么NULL能确保是0,但空(null)指针却不一定?
随便使用术语“null” 或“NULL” 时, 可能意味着以下一种或几种含义:
本文用短语“空指针” (“null pointer”, 小写) 表示第一种含义, 标识“0” 或短语“空指针常数” 表示含义3, 用大写NULL 表示含义4。
- 概念上的空指针, 问题5.1 定义的抽象语言概念。它使用以下的东西实现的……
- 空指针的内部(或运行期) 表达形式, 这可能并不是全零, 而且对不用的指针类型可能不一样。真正的值只有编译器开发者才关心。C 程序的作者永远看不到它们, 因为他们使用……
- 空指针常数, 这是一个常整数0 (参见问题5.2)。它通常隐藏在……
- NULL 宏, 它被定义为0 (参见问题5.4)。最后转移我们注意力到……
- ASCII 空字符(NUL), 它的确是全零, 但它和空指针除了在名称上以外, 没有任何必然关系; 而……
- “空串” (null string), 它是内容为空的字符串("")。在C 中使用空串这个术语可能令人困惑, 因为空串包括空字符(’\0’),但不包括空指针, 这让我们绕了一个完整的圈子……
本文用短语“空指针” (“null pointer”, 小写) 表示第一种含义, 标识“0” 或短语“空指针常数” 表示含义3, 用大写NULL 表示含义4。