В C нет разницы между x[7]
и 7[x]
.Они оба равны *(x+7)
(и *(7+x)
, поскольку сложение коммутативно), что означает седьмой элемент массива x
.
В этом конкретном случае (1[d=b]
) вы сначала назначаете текущийзначение от b
до d
, затем вычислите 1[d]
, что совпадает с d[1]
.
Делая это таким образом (offset[base]
вместо base[offset]
), он позволяет вамобъедините его с заданием, иначе вам понадобится:
d = b; char *v = d[1];
Полагаю, мне не нужно было говорить, что на самом деле это очень плохой код, о чем свидетельствуеттем, что вы должны очень серьезно задуматься о том, что это значит.Лучший код будет почти мгновенно расшифрован.