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

C/C++ পয়েন্টার (Pointer) vs জাভা রেফারেন্স (Reference) - পার্থক্য

পয়েন্টার (C/C++)

পয়েন্টার হলো একটি ভেরিয়েবল যা অন্য ভেরিয়েবলের মেমরি ঠিকানা সংরক্ষণ করে।

উদাহরণ

#include <iostream>
using namespace std;

int main() {
    int i = 8;
    int *pI;
    pI = &i;           // i-এর ঠিকানা pI-তে
    cout << i << endl;  // 8
    cout << pI << endl; // ঠিকানা
    cout << *pI << endl; // 8 (value at address)
    *pI = 10;          // পয়েন্টারের মাধ্যমে মান পরিবর্তন
    cout << i << endl;  // 10
}

আউটপুট

8
0x7fee1ae7bc94
8
10

রেফারেন্স (Java)

জাভাতে রেফারেন্স হলো একটি ভেরিয়েবল যা একটি অবজেক্টকে রেফার করে, যার মাধ্যমে অবজেক্টের প্রোপার্টি এবং মেথড অ্যাক্সেস করা যায়।

উদাহরণ

public class Tester {
    public static void main(String[] args) {
        Student student = new Student();
        student.setName("Mahesh");
        System.out.println(student.getName());
    }
}

class Student {
    String name;
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
}

আউটপুট

Mahesh

মূল পার্থক্যগুলো

  • পয়েন্টার ארিথমেটিক নেই জাভাতে: C/C++-এ পয়েন্টার ইনক্রিমেন্ট/ডিক্রিমেন্ট করা যায়, জাভাতে রেফারেন্সের ওপর এরিথমেটিক অপারেশন অনুমোদিত নয়।
  • পয়েন্টার ম্যানিপুলেশন নেই জাভাতে: জাভা আন্ডারলাইন পয়েন্টার ম্যানিপুলেট করার অনুমতি দেয় না, এটি জাভাকে নিরাপদ করে।
  • কাস্টিং পার্থক্য: C/C++-এ int* কে char* কাস্ট করা যায়, জাভাতে শুধু সম্পর্কিত অবজেক্ট কাস্ট করা যায়।
  1. C++-এ পয়েন্টার অপারেটর * (ইন্ডিরেকশন)

  2. C++-এ পয়েন্টার অপারেটর & (অ্যাড্রেস অফ)

  3. লিনাক্সে C++-এর জন্য সেরা IDE কী?

  4. C#-এ পয়েন্টার কী?