Dinah Dinah - 12 days ago 7
C Question

With C arrays, why is it the case that a[5] == 5[a]?

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]
?

Answer

The C standard defines the [] operator as follows:

a[b] == *(a + b)

Therefore a[5] will evaluate to:

*(a + 5)

and 5[a] will evaluate to:

*(5 + a)

a is a pointer to the first element of the array. a[5] is the value that's 5 elements further from a, which is the same as *(a + 5), and from elementary school math we know those are equal. (Addition is commutative.)