I had always assumed that it was merely some strange artifact of the language, until I finally thought about it, and then finally understood:<p>arr[index] is equivalent to <i>(arr + index), which by the commutative property of addition is equivalent to </i>(index + arr) = index[arr].<p>Mind = blown
It's not the same as (index + arr). arr is a pointer to the beginning address of a series of particular "types". These types have a specific size in memory. Index increments the pointer by (n * size_of(type)).<p>arr[index] == arr + (n * size_of(type)) == (n * size_of(type)) + *arr