Wednesday, September 25, 2013

সি প্লাস প্লাসঃ পয়েন্টার এবং রেফারেন্সের পার্থক্য

আমার ডিপার্টমেন্টের একজন স্টুডেন্ট জানতে চেয়েছিল পয়েন্টার আর রেফারেন্সের মধ্যে পার্থক্য কি । তখন ওকে বোঝানোর জন্য একটা লিখা লিখেছিলাম সেটাই তুলে দিচ্ছি।


পয়েন্টারঃ
ধরে নাও সোহরাব এবং পলাশ দুই ভাই।

int সোহরাব, *পলাশ;
পলাশ = &সোহরাব;

১ ম লাইনে আমরা চাই যে পলাশ অন্য কারো এড্রেসের জায়গা দখল করুক। তাহলে পলাশের আগে * দিয়ে পয়েন্টার হিসেবে initialize করলাম।

২ লাইনে পলাশের এর মান &সোহরাব লেখার অর্থ- সোহরাবের এর মেমরী এড্রেসে পলাশ এসাইন হয়ে যাচ্ছে।

মানে হল সোহরাবের কাছে ১০ টাকা থাকলে সেটা যেয়ে সোহরাবের মেমরী এড্রেসে বসবে। যেহেতু ২ লাইনে বলে দিয়েছি সোহরাবের মেমরী এড্রেসে যা থাকে তাই পলাশের মান সুতরাং সোহরাবের কাছে ১০ টাকা থাকলে পলাশের কাছেও ১০ টাকা থাকবে। পলাশের কাছে ২০ টাকা থাকলে কিন্তু সোহবারের মান ২০ টাকা হবে না। এখানে পলাশ পয়েন্টার ভেরিয়েবল হিসেবে কাজ করছে।

এটাই পয়েন্টারের বেসিক কনসেপ্ট।

রেফারেন্সঃ

int সোহরাব ;
int &পলাশ = সোহরাব ;

এখানে রেফারেন্স ভেরিয়েবলের ক্ষেত্রে সোহরাব এবং পলাশ একই মেমরী এড্রেস দখল করছে ( উপরের উদাহরনে পয়েন্টারের ক্ষেত্রে শুধুমাত্র পলাশ সোহবারের মেমরী এড্রেস দখল করছে। )।  সোহরাবের কাছে ১০ টাকা থাকলে পলাশের কাছেও ১০ টাকা থাকবে। আবার পলাশের কাছে ২০ টাকা থাকলে তখন আবার সোহবারের কাছেও ২০ টাকা চলে আসবে। পলাশ এখানে রেফারেন্স ভেরিয়েবল হিসেবে কাজ করছে।

এটাই রেফারেন্সের বেসিক কনসেপ্ট।


2 comments:

এখানে আপনি আপনার মূল্যবান মতামতটি প্রকাশ করতে পারেন।