সি প্রোগ্রামিং পয়েন্টার এবং অ্যারে | C Programming Pointers and Arrays
সি প্রোগ্রামিং পয়েন্টার এবং অ্যারে
সি প্রোগ্রমিং এ array এবং pointer প্রায় একই রকম। কিন্তু এদের মধ্যে গুরুত্বপূর্ণ পার্থক্য হলো পয়েন্টারের ভ্যালু হিসাবে বিভিন্ন এড্রেস থাকতে পারে পক্ষান্তরে array এর এড্রেস ফিক্সড(fixed) থাকে।
নিচের উদাহরণের সাহায্যে এদের মধ্যে পার্থক্য দেখানো হলোঃ
#include <stdio.h>
int main()
{
char charArr[4];
int i;
for(i = 0; i < 4; ++i)
{
printf("Address of charArr[%d] = %u\n", i, &charArr[i]);
}
return 0;
}
আউটপুট
Address of charArr[0] = 28ff44 Address of charArr[1] = 28ff45 Address of charArr[2] = 28ff46 Address of charArr[3] = 28ff47
নোটঃ আপনি array এর বিভিন্ন এড্রেস পেতে পারেন।
উপরের উদাহরণের ফলাফলে লক্ষ্য করলে দেখবেন যে, charArr অ্যারে এর পরস্পর দুটি এলিমেন্টের পার্থক্য সমান। অর্থাৎ এদের পার্থক্য হলো ১ বাইট।
কিন্তু পয়েন্টার যেহেতু অন্য ভ্যারিয়েবলের লোকেশনকে নির্দেশ করে, সুতরাং ইহা যেকোনো এড্রেস জমা(store) করতে পারে।
সি প্রোগ্রামিং Array এবং Pointer এর মধ্যে সম্পর্ক
নিচের ন্যায় একটি array বিবেচনা করুনঃ
int arr[4];
সি প্রোগ্রামিং এ array এর নাম সবসময় array এর প্রথম এলিমেন্টের এড্রেসকে নির্দেশ করে।
উপরের প্রোগ্রামে arr এবং &arr[0] উভয়ই প্রথম এলিমেন্টের এড্রেসকে নির্দেশ(point) করে।
&arr[0] সাধারণত arr এর সমান
যেহেতু উভয়ের এড্রেস একই, সুতরাং arr এবং &arr[0] এর ভ্যালুও একই।
arr[0] সাধারণত *arr(পয়েন্টারের এড্রেসের ভ্যালু) এর সমান।
একইভাবে,
&arr[1] সাধারণত (arr + 1) এর সমান এবং arr[1] সাধারণত *(arr + 1) এর সমান। &arr[2] সাধারণত (arr + 2) এর সমান এবং arr[2] সাধারণত *(arr + 2) এর সমান। &arr[3] সাধারণত (arr + 1)এর সমান এবং arr[3] সাধারণত *(arr + 3) এর সমান। . . &arr[i] সাধারণত (arr + i) এর সমান এবং arr[i] সাধারণত *(arr + i) এর সমান।
সি প্রোগ্রামিং এ আপনি array ডিক্লেয়ার(declare) করতে পারেন এবং পয়েন্টার ব্যবহার করে এই array এর ডেটা(data) পরিবর্তন করতে পারেন।
উদাহরনঃ Array এবং Pointer ব্যবহার করে ৫ টি পূর্ণ সংখ্যার যোগফল নির্ণয়ের প্রোগ্রাম।
#include <stdio.h>
int main()
{
int i, classes[5],sum = 0;
printf("Enter 5 numbers:\n");
for(i = 0; i < 5; ++i)
{
// (classes + i) সাধারণত &classes[i] এর সমান
scanf("%d",(classes + i));
// *(classes + i) সাধারণত classes[i] এর সমান
sum += *(classes + i);
}
printf("Sum = %d", sum);
return 0;
}
আউটপুট
Enter 5 numbers: 5 4 10 5 7 Sum = 31