As Joel points out in Stack Overflow podcast #34, in C Programming Language (aka: K & R), there is mention of this property of arrays in C: a[5] == 5[a]
Joel says that it’s because of pointer arithmetic but I still don’t understand. Why does a[5] == 5[a]?
The C standard defines the
[]operator as follows:a[b] == *(a + b)Therefore
a[5]will evaluate to:and
5[a]will evaluate to:ais a pointer to the first element of the array.a[5]is the value that’s 5 elements further froma, which is the same as*(a + 5), and from elementary school math we know those are equal (addition is commutative).