Dinah - 1 month ago 24

C Question

As Joel points out in Stack Overflow podcast #34, in C Programming Language (aka: K & R), there is mention of this property of arrays in C:

`a[5] == 5[a]`

Joel says that it's because of pointer arithmetic but I still don't understand.

`a[5] == 5[a]`

Answer

The C standard defines the `[]`

operator as follows:

`a[b] == *(a + b)`

Therefore `a[5]`

will evaluate to:

```
*(a + 5)
```

and `5[a]`

will evaluate to:

```
*(5 + a)
```

`a`

is a pointer to the first element of the array. `a[5]`

is the value that's 5 **elements** further from `a`

, which is the same as `*(a + 5)`

, and from elementary school math we know those are equal. (Addition is commutative.)