সংক্ষিপ্ত বিবরণ
এই পাজলটি পয়েন্টার এবং অ্যারের `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