Многомерный массив в языке Си – это массив массиов, т.е. массив, элементами котрого являются массивы. Например трехмерный массив есть масив, элементы которого двухмерные массивы
arr[L][M][N];
Массив arr состоит из L элементов. Каждый элемент – это двухмерный массив размерностью M на N.
Рассмотрим, как осуществлять доступ к элементм многомерного массива через указатель. Сделаем это на примере массива arr.
Объявим указатель и свяжем его с массивом arr
int *ptr;
ptr=arr[0][0][0];
arr[i][j][k], или к k-му элементу j-й строки i-го массива M на N массива arr. Последовательно это выполняется так
адрес первого массива M на N ptr
в массиве arr
адрес i-го массива M на N ptr + i*(M*N)
в массиве arr
адрес j-й строки i-го массива M на N ptr + i*(M*N) +j*N
в массиве arr
адрес k-го элемента j-й строки i-го массива ptr + i*(M*N) +j*N+k
M на N ptr + i*(M*N) +j*N в массиве arr
k-й элемент j-й строки i-го массива *(ptr + i*(M*N) +j*N+k)
M на N ptr + i*(M*N) +j*N в массиве arr
Рассмотрим программирование арифметических циклов с табличным изменением аргумента на конкретном примере задачи о вознаграждениях.