কম্পিউটার টিউটোরিয়াল

সি ভাষায় অ্যারে অফ পয়েন্টার এবং পয়েন্টার টু পয়েন্টার

অ্যারে অফ পয়েন্টার (Array of Pointers)

সাধারণ অ্যারের মতো, পয়েন্টারও অ্যারে হিসেবে ঘোষণা করা যায়।

ঘোষণা

datatype *ptr_name[size];

উদাহরণ: int *p[5]; — ৫টি ইন্টেজার পয়েন্টার ধারণ করতে পারে।

ইনিশিয়ালাইজেশন

int a[3] = {10, 20, 30};
int *p[3];
for (int i = 0; i < 3; i++)
    p[i] = &a[i]; // অথবা p[i] = a + i;

এক্সেস

for (int i = 0; i < 3; i++)
    printf("%d ", *p[i]); // 10 20 30

উদাহরণ প্রোগ্রাম

#include <stdio.h>

int main() {
    int a[3] = {10, 20, 30};
    int *p[3];

    for (int i = 0; i < 3; i++)
        p[i] = &a[i];

    printf("Array elements via pointers: ");
    for (int i = 0; i < 3; i++)
        printf("%d ", *p[i]);

    return 0;
}

আউটপুট

Array elements via pointers: 10 20 30

পয়েন্টার টু পয়েন্টার (Pointer to Pointer)

একটি পয়েন্টার যা অন্য পয়েন্টারের ঠিকানা ধারণ করে। ডবল ইন্ডিরেকশন (double indirection)।

ঘোষণা

datatype **ptr_name;

উদাহরণ: int **p;

ইনিশিয়ালাইজেশন

int a = 10;
int *p = &a;
int **q = &p;

এক্সেস

  • *p → a-এর ভ্যালু (10)
  • **q → a-এর ভ্যালু (10)

উদাহরণ প্রোগ্রাম

#include <stdio.h>

int main() {
    int a = 10;
    int *p = &a;
    int **q = &p;

    printf("a = %d\n", a);
    printf("*p = %d\n", *p);
    printf("**q = %d\n", **q);

    return 0;
}

আউটপুট

a = 10
*p = 10
**q = 10

পয়েন্টার টু পয়েন্টারের ব্যবহার

  • ফাংশনে পয়েন্টার আর্গুমেন্ট পাস করলে যাতে কলার পয়েন্টার পরিবর্তন করা যায় (যেমন লিংকড লিস্ট হেড আপডেট)।
  • ২D অ্যারে ডাইনামিক্যালি অ্যালোকেট করার সময়।
  • কমান্ড লাইন আর্গুমেন্ট: char **argv।
  1. সি ভাষায় মনোলিথিক এবং মডুলার প্রোগ্রামিং ব্যাখ্যা

  2. সি ভাষায় ইউনিয়ন টু পয়েন্টার ব্যাখ্যা

  3. সি ভাষায় পয়েন্টার অ্যাক্সেসিং ধারণা ব্যাখ্যা

  4. C#-তে ক্লাস কনসেপ্ট ব্যাখ্যা