This project has moved. For the latest updates, please go here.

The C standard defines the Array Subscript Operator []  as follows:

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

Therefore a[5] will evaluate to:

*(a + 5)

and 5[a] will evaluate to:

*(5 + a)

and from elementary math we know those are equal. 

This is the direct artifact of arrays behaving as pointers, "a" is a memory address. "a[5]" is the value that's 5 elements further from "a". The address of this element is "a + 5". This is equal to offset "a" from "5" elements at the beginning of the address space (5 + a).

Last edited Dec 17, 2015 at 9:08 AM by vineetchoudhary, version 2