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

C/C++ পয়েন্টার পাজল: পয়েন্টার ও অ্যারে সাইজ প্রিডিকশন

সংক্ষিপ্ত বিবরণ

এই পাজলটি পয়েন্টার এবং অ্যারের `sizeof` অপারেটরের আচরণ বোঝার জন্য ডিজাইন করা হয়েছে। ৬৪-বিট সিস্টেমে পয়েন্টার সাইজ ৮ বাইট, `int` সাইজ ৪ বাইট।

কোড ও আউটপুট

int a = 6;
int *p = &a;
int arr[5][8][3];
int *q = &arr[0][0][0];

sizeof(p)  → 8  (পয়েন্টার সাইজ)
sizeof(q)  → 8  (পয়েন্টার সাইজ, অ্যারে সাইজ নয়!)

ব্যাখ্যা

  • `sizeof(p)` পয়েন্টার ভেরিয়েবলের সাইজ রিটার্ন করে (৮ বাইট ৬৪-বিটে)
  • `sizeof(arr)` পুরো অ্যারের সাইজ রিটার্ন করবে (৫×৮×৩×৪ = ৪৮০ বাইট)
  • `sizeof(q)` সারণির প্রথম এলিমেন্টের ঠিকানা ধারণ করে, তাই পয়েন্টার সাইজ (৮ বাইট)
  • পাজলে `sizeof(q)` কে `sizeof(arr)` ভুলে মনে করা হয় — এটাই ট্রিক

আউটপুট

the value of a is 6
predict the size of a 8
Hurry! your prediction is right
Now try this
arr is a 3D array
predict the size of arr 4
Your Guess is wrong
  1. সি/সি++-এ পয়েন্টার এরিথমেটিক

  2. C/C++-এ পয়েন্টারের আকার (What is the size of a pointer in C/C++?)

  3. C/C++ পয়েন্টার (Pointer) vs জাভা রেফারেন্স (Reference) - পার্থক্য

  4. C/C++-এ অ্যারে ডিকে (Array Decay) কী?