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

C ভাষায় পয়েন্টার ও এক-মাত্রিক অ্যারে ব্যাখ্যা


পয়েন্টার হলো একটি ভেরিয়েবল যা অন্য ভেরিয়েবলের অ্যাড্রেস স্টোর করে।

বিশেষত্ব

পয়েন্টারের বৈশিষ্ট্যগুলো নিচে ব্যাখ্যা করা হলো −

  • পয়েন্টার মেমরি স্পেস বাঁচায়।
  • মেমরি লোকেশনে ডায়রেক্ট অ্যাক্সেসের কারণে পয়েন্টারের এক্সিকিউশন টাইম দ্রুত।
  • পয়েন্টার সাহায্যে মেমরি দক্ষতার সাথে অ্যাক্সেস করা যায়, অর্থাৎ মেমরি ডাইনামিক্যালি অ্যালোকেট ও ডি-অ্যালোকেট করা যায়।
  • পয়েন্টার ডেটা স্ট্রাকচারসহ ব্যবহার করা হয়।

পয়েন্টার ঘোষণা, ইনিশিয়ালাইজেশন ও অ্যাক্সেস

নিচের স্টেটমেন্টটি বিবেচনা করুন −

int qty = 179;

মেমরিতে, ভেরিয়েবলটি নিচের মতো রিপ্রেজেন্ট করা যেতে পারে −

C ভাষায় পয়েন্টার ও এক-মাত্রিক অ্যারে ব্যাখ্যা

পয়েন্টার ঘোষণা

এতে অর্থ 'p' হলো একটি পয়েন্টার ভেরিয়েবল যা অন্য একটি ইন্টিজার ভেরিয়েবলের অ্যাড্রেস ধারণ করে, নিচের স্টেটমেন্টে উল্লেখ করা হলো −

int *p;

পয়েন্টার ইনিশিয়ালাইজেশন

অ্যাড্রেস অপারেটর (&) ব্যবহার করে পয়েন্টার ভেরিয়েবল ইনিশিয়ালাইজ করা হয়।

উদাহরণস্বরূপ −

int qty = 175; int *p; p = &qty;

C ভাষায় পয়েন্টার ও এক-মাত্রিক অ্যারে ব্যাখ্যা

পয়েন্টারের মাধ্যমে ভেরিয়েবল অ্যাক্সেস

একটি ভেরিয়েবলের মান অ্যাক্সেস করতে, ইন্ডিরেকশন অপারেটর (*) ব্যবহার করা হয়।

উদাহরণস্বরূপ −

C ভাষায় পয়েন্টার ও এক-মাত্রিক অ্যারে ব্যাখ্যা

এখানে, '*' কে "অ্যাড্রেসের মান" হিসেবে বিবেচনা করা যায়।

দুটি স্টেটমেন্ট নিচের স্টেটমেন্ট দ্বারা সমতুল্য −

p = &qty; n = *p; n = qty

পয়েন্টার ও এক-মাত্রিক অ্যারে

  • কম্পাইলার অ্যারেতে সব এলিমেন্টের জন্য liên tục মেমরি লোকেশন অ্যালোকেট করে।
  • বেস অ্যাড্রেস = অ্যারেতে প্রথম এলিমেন্টের অ্যাড্রেস (ইন্ডেক্স ০)।
    • উদাহরণস্বরূপ − int a[5] = {10, 20, 30, 40, 50};

এলিমেন্টগুলো

পাঁচটি এলিমেন্ট নিচের মতো স্টোর থাকে −

C ভাষায় পয়েন্টার ও এক-মাত্রিক অ্যারে ব্যাখ্যা

  • যদি 'p' ইন্টিজার পয়েন্টার হিসেবে ডিক্লেয়ার করা হয়, তবে অ্যারে 'a' নিচের অ্যাসাইনমেন্ট দ্বারা পয়েন্ট করা যায় −

p = a; (অথবা) p = &a[0];
  • 'a'-র প্রতিটি মান p++ ব্যবহার করে একটি এলিমেন্ট থেকে অন্য এলিমেন্টে যেতে পারা যায়। পয়েন্টার ইনক্রিমেন্ট করলে এর মান সেই ডেটা টাইপের সাইজ অনুযায়ী বাড়ে যেটিকে "স্কেল ফ্যাক্টর" বলা হয়।

  • 'p' এবং 'a'-র সম্পর্ক নিচে ব্যাখ্যা করা হলো −

P = &a[0] = 1000 P+1 = &a[1] = 1004 P+2 = &a[2] = 1008 P+3 = &a[3] = 1012 P+4 = &a[4] = 1016
  • একটি এলিমেন্টের অ্যাড্রেস এর ইন্ডেক্স এবং ডেটা টাইপের স্কেল ফ্যাক্টর ব্যবহার করে গণনা করা যায়। এখানে একটি উদাহরণ দেওয়া হলো।

a[3]-এর অ্যাড্রেস = বেস অ্যাড্রেস + (3 * int-এর স্কেল ফ্যাক্টর) = 1000 + (3*4) = 1000 + 12 = 1012
  • অ্যারে ইন্ডেক্সিং ব্যবহার না করে পয়েন্টার ব্যবহার করে অ্যারে এলিমেন্ট অ্যাক্সেস করা যায়।

  • *(p+3) a[3]-এর মান দেয়।

a[i] = *(p+i)

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

পয়েন্টার ও এক-মাত্রিক অ্যারে-এর জন্য C প্রোগ্রাম নিচে দেওয়া হলো −

#include  main ( ){ int a[5]; int *p, i; printf("৫টি এলিমেন্ট লিখুন"); for(i = 0; i < 5; i++) scanf("%d", &a[i]); p = &a[0]; printf("অ্যারেতে এলিমেন্টগুলো"); for(i = 0; i < 5; i++) printf("%d", *(p+i)); }

আউটপুট

উপরোক্ত প্রোগ্রামটি এক্সিকিউট করলে নিচের ফলাফল পাওয়া যায় −

৫টি এলিমেন্ট লিখুন: 10 20 30 40 50 অ্যারেতে এলিমেন্টগুলো: 10 20 30 40 50

  1. C প্রোগ্রামিং ভাষায় অ্যারে অফ পয়েন্টার্স ব্যাখ্যা

  2. সি ভাষায় মনোলিথিক এবং মডুলার প্রোগ্রামিং ব্যাখ্যা

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

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