how the sizeof array is the total number of elements multiped by its base data type size, when the name of the array gives only the base address.
int array [5];
sizeof array ;
gives 20 bytes.
why not 4 bytes.
because
array = &array[0]
.
how the sizeof array is the total number of elements multiped by its base data type size, when the name of the array gives only the base address.
int array [5];
sizeof array ;
gives 20 bytes.
why not 4 bytes.
because
array = &array[0]
.
>>why not 4 bytes.
You answered your own question in the first sentence you posted. Because 5 * sizeof(int) = 5 * 4 = 20. Simple grade-school math.
>>why not 4 bytes.
You answered your own question in the first sentence you posted. Because 5 * sizeof(int) = 5 * 4 = 20. Simple grade-school math.
why sizeof does not consider name of the array as some address and give pointer size bytes.
>why sizeof does not consider name of the array
>as some address and give pointer size bytes.
Because the conversion from array to pointer only occurs in a value context. The operand of sizeof is being used in an object context, so the conversion doesn't happen.
There are three object contexts for an array:
sizeof a
).&a
).char a[] = "booga";
)In all other cases the name of an array is converted to a pointer to the first element.
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.