পয়েন্টার দিয়ে অ্যারে অ্যাক্সেস করার মাধ্যমে অ্যারের উপাদানগুলোতে পয়েন্টারের সাহায্যে কাজ করা সম্ভব হয়। C++ এ পয়েন্টার এবং অ্যারে ঘনিষ্ঠভাবে সম্পর্কিত, কারণ অ্যারের নাম নিজেই প্রথম উপাদানের মেমোরি অ্যাড্রেস নির্দেশ করে। ফলে অ্যারের প্রথম উপাদানের ঠিকানা পয়েন্টার হিসেবে ব্যবহার করে অ্যারের সমস্ত উপাদান অ্যাক্সেস করা যায়।
পয়েন্টার দিয়ে অ্যারে অ্যাক্সেস করার পদ্ধতি
ধরা যাক আমাদের একটি পূর্ণসংখ্যার অ্যারে আছে:
int numbers[5] = {10, 20, 30, 40, 50};
এখানে numbers নিজেই একটি পয়েন্টার হিসেবে কাজ করে এবং অ্যারের প্রথম উপাদানের ঠিকানা ধারণ করে। পয়েন্টার ব্যবহার করে অ্যারের প্রতিটি উপাদান অ্যাক্সেস করা সম্ভব।
উদাহরণ: পয়েন্টার দিয়ে অ্যারে অ্যাক্সেস
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {10, 20, 30, 40, 50};
int *ptr = numbers; // numbers এর প্রথম উপাদানের ঠিকানা ptr এ রাখা হয়েছে
// পয়েন্টার ব্যবহার করে অ্যারের প্রতিটি উপাদান অ্যাক্সেস
for (int i = 0; i < 5; i++) {
cout << "Element at index " << i << ": " << *(ptr + i) << endl;
}
return 0;
}
বর্ণনা:
- এখানে
ptrনামের একটি পয়েন্টার ভ্যারিয়েবল তৈরি করা হয়েছে, যাnumbersঅ্যারের প্রথম উপাদানের ঠিকানা ধারণ করছে। - লুপের মধ্যে
*(ptr + i)ব্যবহার করে প্রতিটি উপাদান অ্যাক্সেস করা হয়েছে, যেখানেptr + iঅ্যারের প্রতিটি উপাদানের ঠিকানা নির্দেশ করে এবং*অপারেটর ব্যবহার করে সেই ঠিকানার মান অ্যাক্সেস করা হয়েছে।
অ্যারে এবং পয়েন্টার সম্পর্ক
১. numbers অ্যারে নাম নিজেই প্রথম উপাদানের ঠিকানা নির্দেশ করে।
int *ptr = numbers; // numbers[0] এর ঠিকানা
২. ইনডেক্সিং এবং পয়েন্টার অ্যারিথমেটিকস সমতুল্য:
numbers[i]এর মান*(numbers + i)এর সমান।- উদাহরণ:
int value = numbers[2]; // ইনডেক্সিং ব্যবহার করে তৃতীয় উপাদান অ্যাক্সেস
int value2 = *(numbers + 2); // পয়েন্টার ব্যবহার করে তৃতীয় উপাদান অ্যাক্সেস
পয়েন্টার অ্যারেতে অপারেশন
অ্যারের মান পরিবর্তন করা পয়েন্টার দিয়ে
পয়েন্টার ব্যবহার করে অ্যারের উপাদানগুলোর মান পরিবর্তন করা যায়।
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {10, 20, 30, 40, 50};
int *ptr = numbers;
// পয়েন্টার ব্যবহার করে অ্যারের মান পরিবর্তন
for (int i = 0; i < 5; i++) {
*(ptr + i) += 10; // প্রতিটি উপাদানে ১০ যোগ করা
}
// পরিবর্তিত অ্যারে প্রিন্ট করা
for (int i = 0; i < 5; i++) {
cout << "Element at index " << i << ": " << numbers[i] << endl;
}
return 0;
}
বর্ণনা:
- এখানে প্রতিটি উপাদানে
10যোগ করা হয়েছে*(ptr + i) += 10স্টেটমেন্টের মাধ্যমে। - পরিবর্তনের পর
numbersঅ্যারের প্রতিটি উপাদান প্রিন্ট করা হয়েছে, যা পয়েন্টার ব্যবহার করে আপডেট করা হয়েছে।
মাল্টি-ডাইমেনশনাল অ্যারে এবং পয়েন্টার
C++ এ মাল্টি-ডাইমেনশনাল অ্যারে (যেমন ২-মাত্রিক অ্যারে) পয়েন্টার দিয়ে অ্যাক্সেস করা সম্ভব। একটি ২-মাত্রিক অ্যারে মানে হলো অ্যারের মধ্যে অ্যারে রয়েছে।
#include <iostream>
using namespace std;
int main() {
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};
int (*ptr)[3] = matrix; // প্রতিটি সাব-অ্যারে একটি পয়েন্টার
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
cout << "Element at [" << i << "][" << j << "]: " << *(*(ptr + i) + j) << endl;
}
}
return 0;
}
বর্ণনা:
- এখানে
matrix২-মাত্রিক অ্যারের প্রতিটি সাব-অ্যারেptrপয়েন্টারের মাধ্যমে অ্যাক্সেস করা হয়েছে। *(*(ptr + i) + j)এর মাধ্যমেmatrix[i][j]এর মান অ্যাক্সেস করা হয়েছে।
সারসংক্ষেপ
- পয়েন্টার দিয়ে অ্যারে অ্যাক্সেস করার মাধ্যমে ইনডেক্সিং ছাড়াই সরাসরি মেমোরি অ্যাড্রেস ব্যবহার করা যায়।
*(ptr + i)পদ্ধতিতে প্রতিটি অ্যারের উপাদান অ্যাক্সেস করা সম্ভব।- মাল্টি-ডাইমেনশনাল অ্যারেও পয়েন্টার ব্যবহার করে অ্যাক্সেস করা যায়, তবে এতে কিছুটা জটিলতা থাকে।
এই পদ্ধতির মাধ্যমে প্রোগ্রামে মেমোরি ব্যবস্থাপনা সহজতর হয় এবং কোড আরও কার্যকরী ও দক্ষ হয়।
Read more