हम पॉइंटर्स की तुलना कर सकते हैं यदि वे एक ही सरणी की ओर इशारा कर रहे हों। संबंधपरक ऑपरेटर्स का उपयोग दो पॉइंटर्स की तुलना के लिए किया जा सकता है। पॉइंटर्स को गुणा या विभाजित नहीं किया जा सकता।
C में
उदाहरण
#include <stdio.h>
int main() {
int *p2;
int *p1;
p2 = (int *)300;
p1 = (int *)200;
if(p1 > p2) {
printf("P1, p2 से बड़ा है");
} else {
printf("P2, p1 से बड़ा है");
}
return 0;
}
आउटपुट
P2, p1 से बड़ा है
C++ में
उदाहरण
#include <iostream>
using namespace std;
int main() {
int *p2;
int *p1;
p2 = (int *)300;
p1 = (int *)200;
if(p1 > p2) {
cout << "P1, p2 से बड़ा है";
} else {
cout << "P2, p1 से बड़ा है";
}
return 0;
}
आउटपुट
P2, p1 से बड़ा है
पॉइंटर तुलना के बारे में कुछ मुख्य बिंदु:
- यदि समान प्रकार के दो पॉइंटर्स p1 और p2 एक ही ऑब्जेक्ट या फ़ंक्शन की ओर इशारा करते हैं, या दोनों एक ही सरणी के अंत से एक आगे इशारा करते हैं, या दोनों NULL हैं, तो p1<=p2 और p1>=p2 दोनों सत्य देते हैं और p1
p2 दोनों असत्य देते हैं। - यदि दो पॉइंटर्स अलग-अलग ऑब्जेक्ट्स की ओर इशारा करते हैं जो एक ही ऑब्जेक्ट के सदस्य नहीं हैं या एक ही सरणी के तत्व नहीं हैं या अलग-अलग फ़ंक्शन्स की ओर इशारा करते हैं, या यदि उनमें से केवल एक NULL है, तो p1
p2, p1<=p2 और p1>=p2 अनिर्दिष्ट हैं। - यदि दो पॉइंटर्स एक ही ऑब्जेक्ट के नॉन-स्टैटिक डेटा सदस्यों की ओर इशारा करते हैं, या ऐसे सदस्यों के सबऑब्जेक्ट्स या सरणी तत्वों की ओर इशारा करते हैं, समान एक्सेस कंट्रोल के साथ, तो परिणाम निर्दिष्ट होता है।
- यदि दो पॉइंटर्स एक ही ऑब्जेक्ट के नॉन-स्टैटिक डेटा सदस्यों की ओर अलग-अलग एक्सेस कंट्रोल के साथ इशारा करते हैं, तो परिणाम अनिर्दिष्ट होता है।