Ответ 1
Это связано с тем, что оператор индекса массива является коммутативным, т.е. это:
const char *p = "Hello";
char x = p[0];
Является эквивалентным
const char *p = "Hello";
char x = 0[p];
Странно, да? В вашем случае вы индексируете третью позицию строкового литерала (который является массивом) "nsew"
.
some_ptr[n]
эквивалентно *(some_ptr + n)
, и поскольку сложение является коммутативным, оно также эквивалентно *(n + some_ptr)
. Отсюда следует, что n[some_ptr]
также является эквивалентным выражением.
Я бы не рекомендовал использовать эту "функцию", однако... серьезно, не делайте этого.