Friday, 1 April 2016

arrays - Why is 2[myArray] valid C syntax?





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?


Answer




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


No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...