

C's index[arr] notation - leegao

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
======
marcomonteiro
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)).

arr[index] == arr + (n * size_of(type)) == (n * size_of(type)) + *arr

~~~
SamReidHughes
He said it's the same as

    
    
        *(index + arr)
    

which is correct.

C pointer arithmetic already accounts for object sizes.

And it's sizeof, not size_of. And

    
    
        arr + x
    

is completely different from

    
    
        x + *arr
    

And it's a series of "values".

~~~
marcomonteiro
I don't know what I was on. Proof positive that sleep depravation does not
give me more time to be "productive". Thanks for the correction and apologies
for my mistake.

