如何在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的結果是未定義的。
如果兩個指標指向同一個物件的非靜態資料成員,或者指向這些成員的子物件或陣列元素,並且具有相同的訪問控制,則結果是已定義的。
如果兩個指標指向同一個物件的非靜態資料成員,但具有不同的訪問控制,則結果是未定義的。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP