সি++ এ পয়েন্টার দিয়ে ভেরিয়েবলের মেমোরি অ্যাড্রেস ধারণ করার জন্য & (address-of) অপারেটর ব্যবহার করা হয়। পয়েন্টার নিজে কোনো ডেটা মান ধারণ না করে, বরং একটি ভেরিয়েবলের মেমোরি ঠিকানা (address) ধারণ করে। পয়েন্টারের মাধ্যমে ভেরিয়েবলের মেমোরি ঠিকানায় সরাসরি অ্যাক্সেস করা যায়, যা প্রোগ্রামের কার্যকারিতা বাড়াতে সাহায্য করে।
পয়েন্টার দিয়ে ভেরিয়েবলের ঠিকানা ধারণের সাধারণ ধাপ
- একটি ভেরিয়েবল তৈরি করুন এবং এতে একটি মান সংরক্ষণ করুন।
- একটি পয়েন্টার তৈরি করুন এবং ভেরিয়েবলের ঠিকানা এতে সংরক্ষণ করুন।
পয়েন্টার দিয়ে ঠিকানা ধারণ করার উদাহরণ
#include <iostream>
using namespace std;
int main() {
int num = 42; // একটি পূর্ণসংখ্যা ভেরিয়েবল 'num' যার মান 42
int* ptr = # // 'num' এর ঠিকানা 'ptr' পয়েন্টারে সংরক্ষণ করা হচ্ছে
// বিভিন্ন আউটপুট প্রদর্শন করা হচ্ছে
cout << "Value of num: " << num << endl; // ভেরিয়েবলের মান প্রদর্শন করা হচ্ছে
cout << "Address of num: " << &num << endl; // 'num' এর ঠিকানা প্রদর্শন করা হচ্ছে
cout << "Pointer ptr: " << ptr << endl; // পয়েন্টারের মান প্রদর্শন করা হচ্ছে (যা 'num' এর ঠিকানা)
cout << "Value at address ptr: " << *ptr << endl; // পয়েন্টারের মাধ্যমে 'num' এর মান প্রদর্শন করা হচ্ছে
return 0;
}
কোডের ব্যাখ্যা
ভেরিয়েবল num:
- এখানে
numএকটি পূর্ণসংখ্যা ভেরিয়েবল, যার মান42।
পয়েন্টার ptr:
int* ptr = #- এখানেptrএকটি পয়েন্টার যাnumভেরিয়েবলের মেমোরি ঠিকানা ধারণ করে।&numব্যবহার করেnumএর ঠিকানা পাওয়া যায় এবং তাptrতে সংরক্ষণ করা হয়।
Dereference Operator (*):
*ptrব্যবহার করেptrপয়েন্টারে যে ঠিকানা রয়েছে, সেই ঠিকানায় থাকা মূল মানটি অ্যাক্সেস করা যায়।*ptrব্যবহার করলেnumএর মান ৪২ পাওয়া যাবে, কারণptrnumএর ঠিকানা ধারণ করছে।
আউটপুট
Value of num: 42
Address of num: 0x7ffeec123456 // 'num' এর মেমোরি ঠিকানা
Pointer ptr: 0x7ffeec123456 // 'ptr' পয়েন্টারে থাকা 'num' এর ঠিকানা
Value at address ptr: 42 // 'ptr' পয়েন্টার দ্বারা নির্দেশিত মান
বিঃদ্রঃ মেমোরি ঠিকানা (যেমন 0x7ffeec123456) প্রতিবার প্রোগ্রাম চালানোর সময় আলাদা হতে পারে।
পয়েন্টার দিয়ে ভেরিয়েবলের ঠিকানা ধারণের উপকারিতা
- মেমোরি ম্যানেজমেন্ট: পয়েন্টার ব্যবহার করে সরাসরি মেমোরি নিয়ন্ত্রণ করা সম্ভব।
- ডেটা শেয়ারিং: ভেরিয়েবলের ঠিকানা পাস করার মাধ্যমে ফাংশনের মাধ্যমে ডেটা শেয়ার করা যায়।
- ইফিসিয়েন্ট প্রোগ্রামিং: বড় ডেটা বা অবজেক্টগুলো সরাসরি পয়েন্টারের মাধ্যমে পরিচালনা করা যায়, যা প্রোগ্রামিংকে দ্রুততর এবং কার্যকর করে।
সারসংক্ষেপ
সি++ এ পয়েন্টার দিয়ে ভেরিয়েবলের ঠিকানা ধারণ করা একটি গুরুত্বপূর্ণ কৌশল, যা প্রোগ্রামারদেরকে সরাসরি মেমোরি অ্যাক্সেস করতে এবং প্রোগ্রামের কার্যকারিতা বাড়াতে সহায়তা করে। পয়েন্টার ব্যবহারে * এবং & অপারেটর ব্যবহার করে ভেরিয়েবলের মান ও ঠিকানা অ্যাক্সেস করা যায়।
Read more