রেফারেন্স (Reference)
এক্সিস্টিং ভেরিয়েবলের অলтернаেটিভ নাম (এলিয়াস)।
সিনট্যাক্স
Type &newName = existingName;
ইনিশিয়ালাইজেশন
ডিক্লেরেশনের সময়েই ইনিশিয়ালাইজ করা বাধ্যতামূলক।
পয়েন্টার (Pointer)
ভেরিয়েবলের মেমরি ঠিকানা সংরক্ষণ করে।
সিনট্যাক্স
Type *pointer;
ইনিশিয়ালাইজেশন
ডিক্লেরেশনের পরেও করা যায়।
প্রধান পার্থক্যগুলো
| বৈশিষ্ট্য | Reference | Pointer |
|---|---|---|
| অর্থ | এক্সিস্টিং ভেরিয়েবলের অন্য নাম | মেমরি ঠিকানা স্টোর করে |
| Null মান | নাল হতে পারে না | নাল হতে পারে |
| রিঅ্যাসাইন | নয় (একবার বাইন্ড হলে পরিবর্তন নয়) | হ্যাঁ (নতুন ঠিকানায় পয়েন্ট করতে পারে) |
| ইনিশিয়ালাইজেশন | ডিক্লেরেশনের সময় বাধ্য | অনিবার্য নয় |
| মেমরি অ্যাড্রেস | অরিজিনাল ভেরিয়েবলের সাথে শেয়ার | নিজস্ব মেমরি অ্যাড্রেস/সাইজ |
| ডেরেফারেন্স | ইমপ্লিসিট (সাধারণ ভেরিয়েবল মতো) | এক্সপ্লিসিট (*ptr) |
| পাস বাই | পাস বাই রেফারেন্স (ইমপ্লিসিট) | পাস বাই ভ্যালু (পয়েন্টারের ভ্যালু) |
সুপারিশ: ফাংশন প্যারামিটার/রিটার্নে রেফারেন্স ব্যবহার করুন (নিরাপদ, পঠনীয়)। পয়েন্টার ব্যবহার করুন যখন: নাল допуস্থ, রিঅ্যাসাইনমেন্ট দরকার, অ্যারে/বাফার ম্যানিপুলেশন।