Это именно то, что вы сказали. Массив a
(чье определение вы не показывали), вероятно, имеет тип int* [5]
.
Цель этого состоит в том, чтобы включить нормальное двойное индексирование (т.е. без постоянной арифметики индекса). Чтобы увидеть это, подумайте, что произойдет, если вы получите доступ к a[1][2]
После вышеприведенного цикла a[1]
содержит значение buffer + 3
, т.е. оно указывает на четвертый элемент buffer
(добавление n
к указателю перемещает указатель n
элементов вперед). Таким образом, a[1][2]
- это то же самое, что и (buffer+3)[2]
, который обращается к значению, которое на два элемента дальше, чем *, куда указывает buffer+3
, другими словами, оно эквивалентно buffer[5]
.
В целом, после этой инициализации a[i][k]
получает доступ к тому же элементу, что и buffer[3*i+k]
(ну, если, конечно, i
больше 4, конечно).