เราสามารถเปรียบเทียบพอยน์เตอร์ได้หากพวกมันชี้ไปที่อาร์เรย์เดียวกัน สามารถใช้พอยน์เตอร์เชิงสัมพันธ์เพื่อเปรียบเทียบพอยน์เตอร์สองตัว ตัวชี้ไม่สามารถคูณหรือหารได้
ใน 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 ทั้งคู่ให้ผลลัพธ์เป็นเท็จ หากตัวชี้สองตัว p1 และ p2 ที่เป็นประเภทเดียวกันชี้ไปที่วัตถุหรือฟังก์ชันเดียวกัน หรือทั้งสองจุดหนึ่งผ่านจุดสิ้นสุดของ อาร์เรย์เดียวกัน หรือเป็นโมฆะทั้งคู่ -
p1
p2, p1<=p2 และ p1>=p2 ไม่ได้ระบุ ถ้าตัวชี้สองตัว p1 และ p2 ที่เป็นประเภทเดียวกันชี้ไปที่วัตถุอื่นที่ไม่ใช่สมาชิกของวัตถุหรือองค์ประกอบเดียวกันในอาร์เรย์เดียวกันหรือ ฟังก์ชันต่างๆ หรือหากมีเพียงฟังก์ชันใดฟังก์ชันหนึ่งเป็นโมฆะ -
หากตัวชี้สองตัวชี้ไปที่สมาชิกข้อมูลที่ไม่คงที่ของวัตถุเดียวกัน หรือไปยังวัตถุย่อยหรือองค์ประกอบอาร์เรย์ของสมาชิกดังกล่าว ด้วยการควบคุมการเข้าถึงที่เหมือนกัน ผลลัพธ์จะถูกระบุ
-
ผลลัพธ์จะไม่ถูกระบุ ถ้าตัวชี้สองตัวชี้ไปที่สมาชิกข้อมูลที่ไม่คงที่ของวัตถุเดียวกันที่มีการควบคุมการเข้าถึงต่างกัน