>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:
As the operand to sizeof ( sizeof a ).
As the operand to address-of ( &a ).
As a string literal initializer ( char a = "booga"; )
In all other cases the name of an array is converted to a pointer to the first element.