有时内存地址为0x0的数据非常有价值 - 以x86实模式IVT作为一个更为人熟知的例子:它从0x0开始并包含指向中断处理程序的指针:0x00处的双字是指向零错误处理程序的指针.
但是,C11语言标准禁止解除引用空指针[WG14 N1570 6.5.3.2],它们被定义为用0初始化的指针或用空指针[WG14 N1570 6.3.2.3] 初始化的指针,有效地禁止了第一个字节.
人们如何在需要时实际使用0x0?
在C++中,我声明一个空指针int* p=0,这是否意味着零是整数指针类型的一些特殊常量,或者它是否意味着p指向地址0x0?当然,因为它0x0必须是C++在分配变量/数组时从不接触的特殊地址.