问:NULL应该如何应该如何定义?
定义?答:0和在任何其他机器上一样:作为0(或某种版本的
;参见问题 5.4)。0'' 或 ``应该如何无论何时程序员请求一个空指针,无论是通过编写“0”,编译器都有责任生成机器使用的该空指针的位模式。(同样,当0出现在指针上下文中时,编译器可以判断一个未经修饰的应该如何为0请求一个空指针;参见问题 5.2。) 因此,在一个内部空指针为非零值的机器上 #define NULL 与在任何其他机器上一样有效:编译器必须始终能够生成机器正确的空指针,以响应在指针上下文中看到的未经修饰的0。常量0是一个空指针常量;应该如何只是它的一个方便的名称(另见问题 5.13)。
(C 标准的第 4.1.5 节声明应该如何“扩展为一个实现定义的空指针常量”,这意味着该实现可以选择使用的0形式以及是否使用void *强制转换;参见问题 5.6 和 5.7。 “实现定义”在这里不意味着应该如何可能被#define定义为匹配某些特定于实现的非零内部空指针值。)
参考文献:ISO Sec. 7.1.6
原理 Sec. 4.1.5