That is not the case. When a pointer is passed as a parameter to sizeof it returns the size of the pointed structure in bytes. Therefore this statement (sizeof(hello)/sizeof(int)) returns the number of elements in the array of type int*.
But this won't work for dynamically allocated arrays which was not the case.