हम पॉइंटर्स की तुलना कर सकते हैं यदि वे एक ही ऐरे की ओर इशारा कर रहे हैं। रिलेशनल पॉइंटर्स का उपयोग दो पॉइंटर्स की तुलना करने के लिए किया जा सकता है। पॉइंटर्स को गुणा या विभाजित नहीं किया जा सकता है।
सी में
उदाहरण
#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 अलग-अलग ऑब्जेक्ट्स को इंगित करते हैं जो एक ही ऑब्जेक्ट या एक ही सरणी के तत्वों के सदस्य नहीं हैं या विभिन्न कार्य, या यदि उनमें से केवल एक ही रिक्त है। -
यदि दो पॉइंटर्स एक ही ऑब्जेक्ट के गैर-स्थिर डेटा सदस्यों को इंगित करते हैं, या ऐसे सदस्यों के उप-वस्तुओं या सरणी तत्वों को समान एक्सेस कंट्रोल के साथ इंगित करते हैं तो परिणाम निर्दिष्ट होता है।
-
परिणाम अनिर्दिष्ट है, यदि दो पॉइंटर्स एक ही ऑब्जेक्ट के गैर-स्थिर डेटा सदस्यों को अलग-अलग एक्सेस कंट्रोल के साथ इंगित करते हैं।