Язык С++ и программирование на нем. Рейзлин В.И. - 36 стр.

UptoLike

Составители: 

38
5.5. Многомерные массивы
Двумерный массив рассматриваются как массив элементов, каж-
дый из которых является одномерным массивом. Трехмерный как
массив, элементами которого являются двумерные массивы и т.д.
После объявления
int a[5][6][7];
в программе могут появиться выражения:
a[i][j][j] объект типа int;
a[2][0] объект типа int*одномерный массив из 7 целых;
a[1] двумерный массив из 6*7 = 42 целых;
a сам трехмерный массив.
Так как элементом массива a является двумерный подмассив раз-
мером 6*7, то при выполнении выражения a + 1 происходит смещение
на величину элемента массива a, т.е. переход от a[0] к a[1]. Значение
адреса при этом увеличивается на 6*7*sizeof(int) =84.
Для двумерного массива mas выражение mas[i][j] интерпретиру-
ется как *(*(mas+i)+j). Здесь mas[i]константный указатель на i-ю
строку массива mas.
В памяти массивы хранятся по строкам, т.е. при обращении к эле-
ментам в порядке их размещения в памяти быстрее всего меняется са-
мый правый индекс.
Так, для массива c[2][3] его шесть элементов расположены в па-
мяти так:
c[0][0] c[0][1] c[0][2] c[1][0] c[1][1] c[1][2].
Многомерные массивы также можно инициализировать при опи-
сании:
int d[2][3]={ 1, 2, 0, 5 };
В этом случае первые 4 элемента массива получат указанные зна-
чения, а остальные два инициализируются нулями.