是NULL指针<任何其他指针(NULL除外)?

时间:2012-09-01 03:28:17

标签: c pointers

关于C标准的另一个问题。我已经对此进行了测试,并且总是NULL < ptr为真,其中ptr是任何与NULL不同的指针。但我知道标准说指针算术和比较仅在数组的边界内定义。我只是不确定特定的比较NULL < ptr是否合法。

编辑:我一直在阅读K&amp; R,我发现了以下引用:

  

任何指针都可以有意义地比较等于或不等于零。但是对于算术或与不指向同一数组成员的指针进行比较的行为是未定义的。

我不确定这是否会影响已经提出这个问题的答案。在任何情况下,我仍然不确定p > NULL是否始终保证返回true,其中p是指针!=NULL

2 个答案:

答案 0 :(得分:6)

NULL < ptr无效:无法对空指针进行关系比较。这样做会产生不确定的行为。

你是正确的,你只能比较指向同一个对象的指针(无论是数组中的元素还是聚合的子对象)。由于空指针不指向任何对象,因此无法将其与任何对象进行关联比较。

答案 1 :(得分:3)

仅定义了与另一个NULL(= true)或不是(= false)的比较。

NULL 一般定义为零,因此通常比较小于,但实际上它没有定义