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