比较使用关系运算符的指针

当为同一类型的对象的两个指针进行比较时,结果取决于在程序地址空间所指向的对象的位置。 指针也可以使用计算为 0 或对类型无效指针 * 的常数表达式进行比较。 如果指针进行比较的类型无效指针 *,其他指针隐式转换为类型 void *。 然后进行比较。

两个不同类型的指针不能比较,除非:

  • 一个类型是从另一个类型派生的类类型。

  • 至少有一个指针显式转换为类型 void *。 (其他指针隐式转换为转换的类型 void *。)

指向同一对象相同类型的两个指针确保相等。 如果对对象的非静态成员的两个指针进行比较,适用以下规则:

  • 如果类类型不是联合,,并且,如果两个成员不受一个访问说明符分离,例如,公共或受保护私有,则成员的指针最后声明与之前该成员的指针进行比较的声明。 有关 访问说明符的信息,(,请参见。 访问说明符的语法部分。)

  • 如果两个成员进行 访问说明符分离,结果是未定义的。

  • 如果类类型是联合,对不同的数据成员的指针该联合的相等。

如果两个指针指向同一个数组的元素或对数组外结束的元素的,那么对该对象的指针具有更高的下标比较更高。 ,仅当指针引用对象在同一个数组或传递数组时,结束的位置指针比较是指的有效。

请参见

参考

与二元运算符的表达式