Difficulty: Easy
Correct Answer: 20, 4, 4
Explanation:
Introduction / Context:
This measures your knowledge of sizeof behavior with arrays versus elements in C. Unlike a pointer to the first element, an array expression used directly with sizeof does not decay; it yields the full storage size of the entire array object.
Given Data / Assumptions:
sizeof values: the whole array, the first dereferenced element, and arr[0].
Concept / Approach:
sizeof(arr) = number_of_elements * sizeof(int) = 5 * 4 = 20sizeof(*arr) = sizeof(int) = 4sizeof(arr[0]) = sizeof(int) = 4Because sizeof is an operator evaluated at compile time (no decay for arr here), it returns the full byte size of the array object.
Step-by-Step Solution:
Compute each term using int = 4 bytes.Format and print: 20, 4, 4.
Verification / Alternative check:
Replace arr with a pointer variable; then sizeof(ptr) would return the pointer size, not the array size. This highlights why sizeof on arrays is special.
Why Other Options Are Wrong:
(a), (c), (d) use 2-byte ints or wrong counts. (e) assumes 6 elements or different size.
Common Pitfalls:
Confusing arrays with pointers; assuming sizeof(arr) yields pointer size; forgetting that sizeof is compile-time for known objects.
Final Answer:
20, 4, 4
Discussion & Comments