সি পাইথন প্রোগ্রামিং জাভাস্ক্রিপ্ট পিএইচপি এসকিউএল জেকুয়েরি এইচটিএমএল সিএসএস বুটস্ট্রাপ এঙ্গুলার জেএস
লগইন
×

 সি টিউটোরিয়াল

সি প্রোগ্রামিং কি? সি এর ইতিহাস সি এর বৈশিষ্ট্যসমূহ কেন সি শিখবেন? সি ইন্সটলেশন প্রথম সি প্রোগ্রাম সি প্রোগ্রামের ফ্লো প্রোগ্রামিং শেখার সঠিক পদ্ধতি সি কীওয়ার্ড সি আইডেন্টিফায়ার সি ভ্যারিয়েবল সি কনস্ট্যান্ট সি ডাটা টাইপ সি মোডিফায়ার সি ইনপুট/আউটপুট সি অপারেটর সি কমেন্ট সি অপারেটর অগ্রাধিকার

সি কন্ট্রোল স্টেটমেন্ট

সি ইফ সি ইফ...ইলস সি ফর লুপ সি হোহাইল লুপ সি ডু...হোহাইল লুপ সি ব্রেক সি কন্টিনিউ সি সুইচ স্টেটমেন্ট সি goto স্টেটমেন্ট

 সি ফাংশন

সি ফাংশন পরিচিতি সি ইউজার কর্তৃক ফাংশন সি ফাংশন টাইপ সি রিকার্সন সি ভ্যারিয়েবল স্কোপ

 সি অ্যারে

সি অ্যারে পরিচিতি সি মালটি-ডাইমেনশনাল অ্যারে সি অ্যারে ফাংশন

 সি স্ট্রিং

সি স্ট্রিং সি স্ট্রিং ফাংশন

 সি পয়েন্টার

সি পয়েন্টার পরিচিত সি পয়েন্টার অ্যারে সি পয়েন্টার ফাংশন সি মেমোরি ম্যানেজমেন্ট

 সি ফাইল এবং স্ট্রাকচার

স্ট্রাকচার পরিচিত স্ট্রাকচার ও পয়েন্টার সি স্ট্রাকচার ও ফাংশন সি ইউনিয়ন ফাইল হ্যান্ডেলিং

 সি অতিরিক্ত টিউটোরিয়াল

সি লাইব্রেরী সি প্রিপ্রোসেসর এবং ম্যাক্রো সি ইনুমিরেশন সি এরর নিয়ন্ত্রণ সি টাইপ কাস্টিং সি বিট ফিল্ড সি ভ্যারিয়েবল আর্গুমেন্ট সি কমান্ড লাইন আর্গুমেন্ট

 

সি প্রোগ্রামিং পয়েন্টার এবং অ্যারে | C Programming Pointers and Arrays


এই অধ্যায়ে আপনি array এবং pointer এর সম্পর্ক সম্মন্ধে জানবেন এবং আপনি আপনার প্রোগ্রামে সঠিকভাবে এদেরকে ব্যবহার করা শিখবেন।

সি প্রোগ্রামিং পয়েন্টার এবং অ্যারে

সি প্রোগ্রমিং এ 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];

Relation between arrays and pointers


সি প্রোগ্রামিং এ 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