Why in C++ for array *(&array) gives array first element address

When we run this in C++

int main(){
int array[5] = {1,2,3,4,5};
cout << *(&array);

Why does it put address of first element of array? I thought that (&array) would give address of first element of array and *(&array) would give VALUE inside it because we are using dereferene * operator on a pointer.

But it shows address of first element of array.

Please can someone tell why it is so?



Value at address in first array index(value of first array element)

>Solution :

There are a number of things happening here that can easily give someone a migraine, so let’s try to look at it from a much simpler approach. Let’s just say that all you have:

int p;

Then, it’s pretty simple to understand: *&p is the same thing as p. Taking an address of something, then dereferencing it, brings you right back where you started. You have accomplished absolutely nothing at all, whatsoever.


This is the same exact thing as: *&array, or array, or the address of the first value in the array. The End.

Leave a Reply