如何在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的結果是未定義的。
如果兩個指標指向同一個物件的非靜態資料成員,或者指向這些成員的子物件或陣列元素,並且具有相同的訪問控制,則結果是已定義的。
如果兩個指標指向同一個物件的非靜態資料成員,但具有不同的訪問控制,則結果是未定義的。
廣告