আমরা পয়েন্টার তুলনা করতে পারি যদি সেগুলো একই অ্যারে পয়েন্ট করে। রিলেশনাল অপারেটর ব্যবহার করে দুটি পয়েন্টার তুলনা করা যায়। পয়েন্টার গুন বা ভাগ করা যায় না।
সি-তে (In 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
সি++-তে (In 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 উভয় true, আর p1
p2 উভয় false দেবে। - যদি দুটি পয়েন্টার ভিন্ন অবজেক্ট পয়েন্ট করে যা একই অবজেক্টের সদস্য নয় বা একই অ্যারের এলিমেন্ট নয়, বা ভিন্ন ফাংশন, বা শুধু একটি নাল হয়, তবে p1
p2, p1<=p2, p1>=p2 অনির্দিষ্ট (unspecified)। - যদি দুটি পয়েন্টার একই অবজেক্টের নন-স্ট্যাটিক ডেটা সদস্য পয়েন্ট করে, বা সাবঅবজেক্ট বা অ্যারে এলিমেন্ট, এবং একই অ্যাক্সেস কন্ট্রোল থাকে, তবে ফলাফল নির্দিষ্ট।
- যদি অ্যাক্সেস কন্ট্রোল ভিন্ন হয়, তবে ফলাফল অনির্দিষ্ট।