
- •Глава 3. Производные типы данных. Массивы.
- •3.3. Многомерные массивы.
- •3.4. Базовые алгоритмы обработки двумерных массивов.
- •Глава 4. Функции.
- •4.1. Стандартное определение функции.
- •4.2. Локальные переменные.
- •4.3. Размещение тела функции. Прототип функции.
- •4.4. Глобальные переменные.
- •4.5. Классы памяти.
- •5.1. Директива # define.
- •5.2. Использование макроопределений с аргументами.
- •5.3. Директива # include. Включение файла.
- •5.4. Условная компиляция.
3.3. Многомерные массивы.
Многомерные массивы в языке Си/Си++ трактуются как массивы массивов, т.е. элементами некоторого массива в свою очередь являются массивы. Рассмотрим двумерные массивы.
Двумерный массив трактуется как одномерный массив элементами, которого является массив с указанным в описании типом элементов.
0 |
1 |
2 |
3 |
4 |
0 |
3 |
10 |
0 |
1 |
2 |
1 |
3 |
4 |
5 |
7 |
8 |
2 |
0 |
4 |
2 |
3 |
9 |
3 |
10 |
-3 |
4 |
5 |
6 |
4 |
рис.1
На рисунке 1 изображена матрица, ранг которой равен 4х5. Эту матрицу можно рассматривать как совокупность одномерных массивов – строк.
-
0
1
2
3
4
0
3
10
0
1
2
1
3
4
5
7
8
2
0
4
2
3
9
3
10
3
4
5
6
4
Объявим целочисленный массив (матрица, ранг которой 4х5) как массив из четырёх элементов, при этом каждый его элемент в свою очередь является одномерным массивом из пяти элементов.
int A[4][5];
Местоположение конкретного элемента определяется двумя индексами. Первый индекс указывает местоположение элемента в строке, второй - в столбце.
Например, элемент А [0][0] располагается в нулевой строке и нулевом столбце, его значение равно - 3.
Порядок расположения элементов многомерного массива в памяти такой, что, прежде всего, меняется последний индекс, затем предпоследний, и т.д. лишь один раз пробегает свои значения первый индекс.
Примеры описания двумерных массивов:
1. int A [3][3] ={11, 12, 13,
21, 22, 23,
31, 32, 33};
2. float B [2][3]={{1, 2, 3}, {4, 5, 6,}};
3. double D [4][5]={{1, 2, 3, 4, 5}};
инициализировали только первую строку двумерного массива.
4.double d [4][5]= {{1}, {2}, {3}, {4}};
инициализировали в каждой строке только первый элемент, следовательно, инициализировали первый столбец двумерного массива.
5.int z [4][4]={{1}, {1, 2}, {1, 2, 3}, {1, 2, 3, 4}};
вид массива после инициализации:
0 |
1 |
2 |
3 |
|
1 |
. |
. |
. |
0 |
1 |
2 |
. |
. |
1 |
1 |
2 |
3 |
. |
2 |
1 |
2 |
3 |
4 |
3 |
рис. 2