মডিউল ১৫-৪ঃ এরে এবং পয়েন্টার

আমরা যখন একটি এরে ডিক্লেয়ার করি তখন এরের নামটি আসলে একটি পয়েন্টার হিসেবে কাজ করে কারন এরের নামটি প্রথম ইন্ডেক্স এর এড্রেসকে স্টোর করে। আমরা যদি প্রমান দেখতে চাইঃ

#include<stdio.h>
int main()
{
    int a[5] = {10,20,30,40,50};       // ৫ সাইজের একটি এরে ডিক্লেয়ার করা হয়েছে। 
    printf("0th index er address : %p\n",&a[0]);   // ০ তম ইন্ডেক্সের এড্রেস প্রিন্ট করা হচ্ছে।
    printf("0th index er address : %p\n",a);    // ০ তম ইন্ডেক্সের এড্রেস প্রিন্ট করা হচ্ছে।
}

কোডটি রান করলে দেখতে পাব দুইক্ষেত্রেই সেইম আউটপুট আসছে। তারমানে ০ তম ইন্ডেক্সের এড্রেস প্রিন্ট করা আর এরের নামটি প্রিন্ট করা আসলে একই কথা। এতেই প্রমান হয় এরের নামটি আসলে একটি পয়েন্টার। আমরা যখন একটি পয়েন্টার ভেরিয়েবল প্রিন্ট করি তখন সেটি যেই এড্রেস স্টোর করে আছে তা প্রিন্ট করে। এখানে আমরা যখন এরের নামটি প্রিন্ট করলাম তখন সে ০ তম ইন্ডেক্সের এড্রেসটি প্রিন্ট করল। তারমানে এরের নামটি একটি পয়েন্টার যা এরের ০ তম ইন্ডেক্সের এড্রেস স্টোর করে।

যেহেতু এরে একটি পয়েন্টার তাই একে আমরা ইন্ডেক্স ছাড়াই পয়েন্টার দিয়ে পরবর্তী ভেলু গুলো এক্সেস করতে পারি। এরে একটি পয়েন্টার যা এরের প্রথম ইন্ডেক্সের এড্রেস স্টোর করে তাই এরেকে যদি আমরা ডিরেফারেন্স করি তাহলে প্রথম ইন্ডেক্সের ভেলু পাওয়া যাবে। সেইমভাবে আমরা যদি এরের নামের সাথে ১ যোগ করে তারপর ডিরেফারেন্স করি তাহলে দ্বিতীয় ইন্ডেক্সের ভেলু পাওয়া যাবে।

#include<stdio.h>
int main()
{
    int a[5] = {10,20,30,40,50};
    printf("1st value = %d\n",*a);    // প্রথম ভেলু (১০) প্রিন্ট হবে। 
    printf("2nd value = %d\n",*(a+1)); // দ্বিতীয় ভেলু (২০) প্রিন্ট হবে।
}

Last updated