The following code snippet proofs that both are the same:
int a[4];
printf("a: %p\n&a: %p", a, &a);
"0x12345678"
"0x12345678"
But the compiler will warn in case of:
int a[4], *p;
p = &a;
assignment from incompatible pointer type
Which pointer type does &a
have ?