Многомерные массивы в С++
Задают указанием каждого измерения в квадратных скобках, например, описание двумерного массива из 6 строк и 8 столбцов.
Для доступа к элементу многомерного массива указываются все его индексы:
Инициализация многомерного массива
1) Массив представляется как массив массивов, при этом каждый массив заключается в свои фигурные скобки (в этом случае левую размерность при описании можно не указывать),
int matr [6][8];В памяти массив располагается в последовательных ячейках построчно. Многомерные массивы размещаются так, что при переходе к следующему элементу быстрее всего изменяется последний индекс.
Для доступа к элементу многомерного массива указываются все его индексы:
matr[i][j]или
*(matr[i]+j) или *(*(matr+i)+j).Это так потому что matr[i] - адрес начала i-й строки массива.
Инициализация многомерного массива
1) Массив представляется как массив массивов, при этом каждый массив заключается в свои фигурные скобки (в этом случае левую размерность при описании можно не указывать),
int mass2 [][2] = { {1, 1}, {0, 2}, {1, 0} };2) Задается общий список элементов в порядке, в котором элементы располагаются в памяти:
int mass2 [3][2] = {1, 1, 0, 2, 1, 0};Пример. Найти в целочисленной матрице номер строки с наибольшим количеством нулевых элементов.
#includeint main(){ const int nstr = 4, nstb = 5; // размерности массива int b[nstr][nstb]; // описание массива int i, j; for (i = 0; i < nstr; i++) // ввод массива for (j = 0; j < nstb; j++) scanf("%d", &b[i][j]); int istr = -1, MaxKol = 0; for (i = 0; i < nstr: i++){ // просмотр массива по строкам int Коl = 0; for ( j = 0; j < nstb; j-b+) if (b[i][j] == 0)Kol++; if (Kol > MaxKol){istr = i; MaxKol = Kol;} } Printf("Исходный массив :\n"); for (i = 0; i < nstr; i++){ for (j = 0; j < nstb; j++)printf("%d ", b[i][j]); printf ("\n"); } if (istr == -1)printf("Нулевых элементов нет"); else printf("Hoмep строки: "%d", istr); return 0;}