Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

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

  • p1p2, p1<=p2 และ p1>=p2 ไม่ได้ระบุ ถ้าตัวชี้สองตัว p1 และ p2 ที่เป็นประเภทเดียวกันชี้ไปที่วัตถุอื่นที่ไม่ใช่สมาชิกของวัตถุหรือองค์ประกอบเดียวกันในอาร์เรย์เดียวกันหรือ ฟังก์ชันต่างๆ หรือหากมีเพียงฟังก์ชันใดฟังก์ชันหนึ่งเป็นโมฆะ

  • หากตัวชี้สองตัวชี้ไปที่สมาชิกข้อมูลที่ไม่คงที่ของวัตถุเดียวกัน หรือไปยังวัตถุย่อยหรือองค์ประกอบอาร์เรย์ของสมาชิกดังกล่าว ด้วยการควบคุมการเข้าถึงที่เหมือนกัน ผลลัพธ์จะถูกระบุ

  • ผลลัพธ์จะไม่ถูกระบุ ถ้าตัวชี้สองตัวชี้ไปที่สมาชิกข้อมูลที่ไม่คงที่ของวัตถุเดียวกันที่มีการควบคุมการเข้าถึงต่างกัน