What is the following C code doing?
int i;
int* p = &i;
0[p] = 42;
I would have though that this would not event compile. But it even executes without a segmentation fault. So I wonder what strange use of the []
operator I have missed.
The C Standard defined the operator []
this way:
Whatever a
and b
are a[b]
is considred as *((a)+(b))
And that's why 0[p] == *(0 + p) == *(p + 0) == p[0]
which is the first element of the array.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With