Многомерные массивы задаются указанием каждого измерения в квадратных скобках. В памяти многомерные массивы располагаются в последовательных ячейках построчно. Многомерные массивы размещаются так, что при переходе к следующему элементу быстрее всего изменяется последний индекс.
Для доступа к элементу многомерного массива указываются все его индексы.
При инициализации многомерного массива он представляется либо как массив из массивов, при этом каждый массив заключается в свои фигурные скобки (в этом случае крайнюю левую размерность при описании можно не указывать), либо задается общий список элементов в том порядке, в котором элементы располагаются в памяти.
Например:
//одномерный массив (вектор) размерностью 10
int vector[10];
//двумерный массив (матрица) размерностью 3x3
int matrix[3][3];
//двумерный массив размерностью 6 строк на 8 столбцов
int x[6][8];
//трехмерный массив размерностью 6x3x2
int y[6][3][2];
//шестимерный массив размерностью 6x3x2x5x8x4
int z[6][3][2][5][8][4];
//объявление массива с инициализацией
//крайняя левая размерность отсутствует
int mass0 [][2] = { {1, 1}, {0, 2}, {3, 0} };
//объявление массива с инициализацией
int mass1 [3][2] = { {1, 1}, {0, 2}, {3, 0} };
//объявление массива с инициализацией
//для удобства чтения каждая строка массива находится в отдельной строчке
int mass2 [3][2] = {
{1, 1},
{0, 2},
{3, 0}
};
//объявление массива с инициализацией
//внутренние фигурные скобки могут отсутствовать
int mass3 [3][2] = {1, 1, 0, 2, 3, 0};
//объявление массива с инициализацией
//для удобства чтения каждая строка массива находится на отдельной строчке
int mass4 [3][2] = {
1, 1,
0, 2,
3, 0
};
Пример: в целочисленной матрице 3x4 определить номера строки и столбца элемента, который равен нулю. Массив задать случайными числами.
//#include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{
setlocale(LC_ALL, "Russian");
const int N = 3, M = 4;
int r[N][M];
//заполним массив случайными числами от 0 до 9
//внешний цикл для перемещения по строкам
for (int i = 0; i < N; i++)
//внутренний цикл для перемещения по столбцам
for (int j = 0; j < M; j++)
//остаток от деления на 10 позволяет
//получить требуемый диапазон значений
r[i][j] = rand() % 10;
//выведем массив на экран
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
cout << r[i][j] << " ";
}
//перейдем на новую строчку
cout << endl;
}
cout << "Нулевые элементы:" << endl;
//найдем элементы равные 0 и выведем их индексы на экран