Lawrence Kirby 在消息 <918393784snz@genesis.demon.co.uk> 中写道:... >在“地址 0”可以
>指向有效对象的平台上,空指针工作得非常好。但是,空指针
>应该与零进行*比较*相等是有原因的,那就是像if ()
>这样的语句会自然地执行。鉴于此,将空指针常量
>以一致的方式定义是有意义的。
我认为,人们之所以觉得这令人困惑(而且很明显很多人确实觉得困惑;我记得很久以前我也非常困惑),是因为零在不同的情况下含义会发生变化。
通常零代表整数零,但在某些情况下它代表空指针。人们很自然地试图找到它们之间的联系,并将空指针视为指向地址 0,但正如 FAQ 所解释的那样,这是一种无效的方法。
我们都熟悉运算符根据上下文改变其含义(例如,运算符 '-' 与指针一起使用时的行为与与数字一起使用时的行为截然不同),但看到常量那样行事则更令人惊讶。
祝好,
Richard