如何在C/C++中比较指针?


如果指针指向同一个数组,则可以比较指针。可以使用关系指针来比较两个指针。指针不能进行乘法或除法运算。

在C语言中

示例

 在线演示

#include <stdio.h>
int main() {
   int *p2;
   int *p1;
   p2 = (int *)300;
   p1 = (int *)200;
   if(p1 > p2) {
      printf("P1 is greater than p2");
   } else {
      printf("P2 is greater than p1");
   }
   return(0);
}

输出

P2 is greater than p1

在C++中

示例

#include <iostream>
using namespace std;
int main() {
   int *p2;
   int *p1;
   p2 = (int *)300;
   p1 = (int *)200;
   if(p1>p2) {
      cout<<"P1 is greater than p2";
   } else {
      cout<<"P2 is greater than p1";
   }
   return(0);
}

输出

P2 is greater than p1

关于指针比较的一些关键点:

  • 如果两个相同类型的指针p1和p2指向同一个对象或函数,或者都指向同一个数组的末尾之后的一个位置,或者都是空指针,则p1<=p2和p1>=p2都返回true,而p1<p2和p1>p2都返回false。

  • 如果两个相同类型的指针p1和p2指向不同的对象(这些对象不是同一个对象的成员或同一个数组的元素),或者指向不同的函数,或者只有一个为空指针,则p1<p2、p1>p2、p1<=p2和p1>=p2的结果是未定义的。

  • 如果两个指针指向同一个对象的非静态数据成员,或者指向这些成员的子对象或数组元素,并且具有相同的访问控制,则结果是已定义的。

  • 如果两个指针指向同一个对象的非静态数据成员,但具有不同的访问控制,则结果是未定义的。

更新于:2019年7月30日

7K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.