如何在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+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告