Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is 2[myArray] valid C syntax? [duplicate]

Duplicate

In C arrays why is this true? a[5] == 5[a]


Given an array

 myArray[5] = { 0, 1, 2, 3, 4 };

an element can be accessed as

 2[myArray]

Why? When I see this expression I'm imagining C trying to access the pointer "2" and failing to add "myArray" pointer increments to dereference that address. What am I missing?

like image 953
Mitch Flax Avatar asked May 11 '09 15:05

Mitch Flax


1 Answers

in C, a[b] is equivalent to *(a + b). And, of course, the + operator is commutative, so a[b] is the same as b[a] is the same as *(b + a) is the same as *(a + b).

like image 147
Chris Young Avatar answered Sep 27 '22 23:09

Chris Young