কম্পিউটার

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


পয়েন্টার হল একটি ভেরিয়েবল যা অন্য ভেরিয়েবলের ঠিকানা সংরক্ষণ করে।

বৈশিষ্ট্যসমূহ

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

  • পয়েন্টার মেমরির স্থান সংরক্ষণ করে।
  • মেমরি অবস্থানে সরাসরি অ্যাক্সেসের কারণে পয়েন্টার কার্যকর করার সময় দ্রুত হয়।
  • পয়েন্টারের সাহায্যে, মেমরিটি দক্ষতার সাথে অ্যাক্সেস করা হয়, অর্থাৎ, মেমরি বরাদ্দ করা হয় এবং গতিশীলভাবে ডিললোকেট করা হয়।
  • ডাটা স্ট্রাকচারের সাথে পয়েন্টার ব্যবহার করা হয়।

পয়েন্টার ঘোষণা, আরম্ভ এবং অ্যাক্সেস

নিম্নলিখিত বিবৃতিটি বিবেচনা করুন -

int qty = 179;

মেমরিতে, ভেরিয়েবলকে নিম্নরূপ উপস্থাপন করা যেতে পারে −

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

পয়েন্টার ঘোষণা করা হচ্ছে

এর অর্থ হল 'p' হল একটি পয়েন্টার ভেরিয়েবল যা অন্য পূর্ণসংখ্যা ভেরিয়েবলের ঠিকানা ধারণ করে, যেমনটি নীচের বিবৃতিতে উল্লেখ করা হয়েছে −

Int *p;

পয়েন্টারের সূচনা

ঠিকানা অপারেটর (&) একটি পয়েন্টার ভেরিয়েবল শুরু করতে ব্যবহৃত হয়।

যেমন −

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

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

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

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

যেমন −

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

এখানে, '*' ঠিকানায় মান হিসাবে গণ্য করা যেতে পারে।

নিম্নলিখিত বিবৃতি -

দ্বারা দুটি বিবৃতি সমতুল্য
p = &qty;
n = *p; n =qty

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

  • কম্পাইলার অ্যারের সমস্ত উপাদানের জন্য অবিচ্ছিন্ন মেমরি অবস্থান বরাদ্দ করে৷
  • বেস ঠিকানা =অ্যারের প্রথম উপাদান ঠিকানা (সূচী 0)।
    • উদাহরণস্বরূপ − int a [5] ={10, 20,30,40,50};

উপাদান

পাঁচটি উপাদান নিম্নরূপ −

সংরক্ষণ করা হয়

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

  • যদি 'p' কে পূর্ণসংখ্যা পয়েন্টার হিসাবে ঘোষণা করা হয়, তাহলে, একটি অ্যারে 'a' নিম্নলিখিত অ্যাসাইনমেন্ট দ্বারা নির্দেশ করা যেতে পারে -

p = a;
(or) p = &a[0];
  • একটি উপাদান থেকে অন্য উপাদানে যাওয়ার জন্য p++ ব্যবহার করে 'a'-এর প্রতিটি মান অ্যাক্সেস করা হয়। যখন একটি পয়েন্টার বৃদ্ধি করা হয়, তখন এটির মান ডেটাটাইপের আকার দ্বারা বৃদ্ধি করা হয় যা এটি নির্দেশ করে। এই দৈর্ঘ্যকে "স্কেল ফ্যাক্টর" বলা হয়।

  • '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
  • একটি উপাদানের ঠিকানা তার সূচক এবং ডেটাটাইপের স্কেল ফ্যাক্টর ব্যবহার করে গণনা করা হয়। এটি ব্যাখ্যা করার জন্য একটি উদাহরণ এখানে দেওয়া হল৷

Address of a[3] = base address + (3* scale factor of int)
= 1000 + (3*4)
= 1000 +12
= 1012
  • পয়েন্টারগুলি অ্যারে ইন্ডেক্সিং ব্যবহার করার পরিবর্তে অ্যারে উপাদানগুলি অ্যাক্সেস করতে ব্যবহার করা যেতে পারে৷

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

a[i] = *(p+i)

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

পয়েন্টার এবং ওয়ান-ডাইমেনশনাল অ্যারে -

এর জন্য সি প্রোগ্রামটি নিচে দেওয়া হল
#include<stdio.h>
main ( ){
   int a[5];
   int *p,i;
   printf ("Enter 5 lements");
   for (i=0; i<5; i++)
      scanf ("%d", &a[i]);
   p = &a[0];
   printf ("Elements of the array are");
   for (i=0; i<5; i++)
      printf("%d", *(p+i));
}

আউটপুট

যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -

Enter 5 elements : 10 20 30 40 50
Elements of the array are : 10 20 30 40 50

  1. সি প্রোগ্রামিং ভাষায় পয়েন্টারগুলির বিন্যাস ব্যাখ্যা কর

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

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

  4. সি ল্যাঙ্গুয়েজে পয়েন্টার এক্সেসিংয়ের ধারণাটি ব্যাখ্যা কর