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

সি/সি++-এ int অ্যারে (int[]) এর সাইজ বের করার পদ্ধতি

সি/সি++-এ একটি অ্যারের এলিমেন্ট কাউন্ট (সাইজ) বের করার জন্য sizeof অপারেটর ব্যবহার করা হয়। যেহেতু অ্যারে নাম fleste কনটেক্সটে পয়েন্টারে ডিকে হয়ে যায়, তাই এই পদ্ধতি শুধু অ্যারে ভেরিয়েবল ডিক্লেয়ার করা স্কোপেই কাজ করে।

ফর্মুলা

size_t count = sizeof(array) / sizeof(array[0]);
  • sizeof(array) = পুরো অ্যারে যে মেমরি দখল করেছে (বাইটে)
  • sizeof(array[0]) = একক এলিমেন্টের সাইজ (বাইটে)
  • ভাগফল = এলিমেন্ট কাউন্ট

উদাহরণ (C++)

#include <iostream>
using namespace std;

int main() {
    int data[] = {11, 22, 33, 44, 55, 66, 77, 88, 99, 91, 82, 73, 64};
    cout << "Memory occupied by data[]: " << sizeof(data) << " bytes\n";
    cout << "Size of data[] array: " << sizeof(data)/sizeof(data[0]) << " elements\n";
    return 0;
}

আউটপুট

Memory occupied by data[]: 52 bytes
Size of data[] array: 13 elements

(১৩ × ৪ বাইট = ৫২ বাইট)

গুরুত্বপূর্ণ সীমাবদ্ধতা

void func(int arr[]) {          // বা void func(int *arr)
    // sizeof(arr) এখানে পয়েন্টার সাইজ রিটার্ন করবে (৪ বা ৮ বাইট)
    // এলিমেন্ট কাউন্ট বের করা যাবে না!
}

ফাংশনে পাস করলে অ্যারে পয়েন্টারে ডিকে যায়। তাই ফাংশনে সাইজ আলাদা পাস করতে হয়।

সেরা অনুশীলন (C++)

  • std::vector বা std::array ব্যবহার করুন — .size() মেথড দিয়ে সরাসরি পাওয়া যায়
  • C-স্টাইল অ্যারে ব্যবহার করতে হলে: template<size_t N> void func(int (&arr)[N]) ব্যবহার করুন (সাইজ সংরক্ষিত থাকে)
  • C++17-এ std::size(arr) (from <iterator>) ব্যবহার করা যাবে

C-এ ম্যাক্রো হেল্পার

#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))

শুধু লোকাল অ্যারে ভেরিয়েবলের সাথে ব্যবহার করুন, পয়েন্টারের সাথে নয়।

  1. C#-এ অ্যারের আকার নির্ধারণ করা

  2. C#-এ লিস্টের সাইজ (Capacity vs Count) বের করা

  3. C#-এ অ্যারের র‍্যাঙ্ক (Rank) বের করা

  4. C#-এ অ্যারের দৈর্ঘ্য কীভাবে জানবেন?