samedi 1 juin 2019

Why is a[j] equal to j[a] for every array a and integer j?

I am reading through the section about pointers and arrays from "The c++ programming language", and I came across something that stumps me.

" For every built-in array a and integer j within the range of a, we have:

a[j] == ∗(&a[0]+j) == ∗(a+j) == ∗(j+a) == j[a]

"

I understand why ∗(&a[0]+j) means the same as a[j], because &a[0] points to the first element of a and then it's incremented by j.

I also get that ∗(a+j) and ∗(j+a) are equal to a[j], a gets implicitly converted from an array to a pointer to the first element of a, and then incremented by j and dereferenced.

But why is a[j] == j[a]? What am I missing?

Aucun commentaire:

Enregistrer un commentaire