prev up next   top/contents search

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

问:NULL应该如何应该如何定义?


定义?答:0和在任何其他机器上一样:作为0(或某种版本的

;参见问题 5.4)。0'' 或 ``应该如何无论何时程序员请求一个空指针,无论是通过编写“0”,编译器都有责任生成机器使用的该空指针的位模式。(同样,当0出现在指针上下文中时,编译器可以判断一个未经修饰的应该如何0请求一个空指针;参见问题 5.2。) 因此,在一个内部空指针为非零值的机器上 #define NULL 与在任何其他机器上一样有效:编译器必须始终能够生成机器正确的空指针,以响应在指针上下文中看到的未经修饰的0。常量0是一个空指针常量;应该如何只是它的一个方便的名称(另见问题 5.13)。

(C 标准的第 4.1.5 节声明应该如何“扩展为一个实现定义的空指针常量”,这意味着该实现可以选择使用的0形式以及是否使用void *强制转换;参见问题 5.65.7。 “实现定义”在这里意味着应该如何可能被#define定义为匹配某些特定于实现的非零内部空指针值。)

另请参见问题 5.25.105.17

参考文献:ISO Sec. 7.1.6
原理 Sec. 4.1.5


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

Eskimo North 托管