#include <cstdio>
typedef struct {
int a;
int b;
int c;
} Foo;
int main() {
Foo foo[42];
printf("foo = %p\n", foo);
printf("&foo = %p\n", &foo);
return 0;
}
When I compile this program with g++
and run it, it produces the following output.
foo = 0xbf8caea8
&foo = 0xbf8caea8
This is not what I expected. When I derefence foo
, I would expect to get the value of foo[0].a
and when I dereference &foo
, I would expect to get a pointer on foo[0].a
.
How can these two pointers be equal?