কম্পিউটার টিউটোরিয়াল

সি/সি++-এ পয়েন্টার তুলনা (Pointer Comparison) কীভাবে করবেন

আমরা পয়েন্টার তুলনা করতে পারি যদি সেগুলো একই অ্যারে পয়েন্ট করে। রিলেশনাল অপারেটর ব্যবহার করে দুটি পয়েন্টার তুলনা করা যায়। পয়েন্টার গুন বা ভাগ করা যায় না।

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

  2. সি/সি++-এ প্রিপ্রসেসর কীভাবে কাজ করে? (How a Preprocessor works)

  3. C/C++-এ স্ট্রিং ইন্টিজার কিনা চেক করা

  4. C++-এ float এবং double তুলনা করা (Comparing Float and Double)