Look at the C code.
#include <stdio.h>
int main(void)
{
int v[3] = {1, 2, 3};
printf("%d\n", v);
printf("%d\n", v + 0);
printf("%zu\n", sizeof(v));
printf("%zu\n", sizeof(v + 0));
printf("%zu\n", sizeof(v + 1));
printf("%zu\n", sizeof(v + 2));
return 0;
}
Here's one of the outputs:
-587904464
-587904464
12
8
8
8
I think v is the same as v + 0.
Both are pointers pointing to the first element in array v[3].
Therefore, v and v+0 have the same value.
But why do they fail to hold the same bytes? (sizeof(v) and sizeof(v + 0) are different )