Объявление двумерного массива в Си — это набор специальных команд, определяющих основные параметры двумерного массива.
Введение
Когда необходимо решить задачу с большими объёмами данных одного вида и применением различных переменных, не отсортированных по адресам памяти, то это вызывает множество проблем при программной реализации решения. Для облегчения условий реализации алгоритма решения задачи, в подобных случаях в языке Си применяют объекты, которые называются массивами. Под массивом понимается определённый раздел памяти, который содержит набор однотипных объектов, имеющий одно имя. Массив можно охарактеризовать следующими параметрами:
Компонент массива. Это значение, которое хранится в отведённой ему ячейке памяти, располагающейся в зоне массива, а также адрес данной ячейки памяти. Все компоненты массива можно охарактеризовать тремя параметрами:
- Адресацией элемента, то есть это адрес первой ячейки памяти, где располагается этот элемент.
- Индексацией элемента. Это его порядковый номер в массиве.
- Собственно, значением элемента.
Адрес массива. Это адрес начального компонента.
Имя массива. Это идентификация, которая применяется для обращения к компонентам массива.
Объём массива. Это число компонентов массива.
Величина компонента. Это число байт, которое занимает один компонент массива.
Длина массива. Это число байт, которое отводится в памяти для сохранения всех компонентов массива. То есть длина массива равна размеру компонента, умноженному на их количество.
Двумерные массивы в Си
Массивы в си могут быть одномерными, двумерными многомерными. Многомерными считаются массивы, имеющие более одного индекса. Многомерные массивы возможно представлять, как набор элементов, распределённых по двум или больше координатам. Двумерный массив может быть представлен, к примеру, в таком виде:
Рисунок 1. Двумерный массив. Автор24 — интернет-биржа студенческих работ
В данном примере показан двумерный массив, который имеет размер 3 х 5, то есть три строки и пять столбцов. Процесс объявления двумерного массива похож на объявлении одномерного, но для двумерного массива необходимо назначить в квадратных скобках размеры каждого направления. К примеру, пусть требуется объявить двумерный массив, имеющий размер 8*8 (кстати, это размеры стандартной шашечной доски, которая имеет восемь строк и восемь столбцов):
int checkers[8][8]; // двумерный массив
Таким образом, данный массив может быть использован для сохранения информации о шашках. Таким же образом двумерный массив можно применить для сохранения информационных данных о других играх, например, о шахматах и так далее. Для получения доступа к элементам таких массивов, необходимо использовать два индекса, которые указывают на номера строк и столбцов. Изложенные выше положения могут быть отнесены и к массивам с размером N. Но уже даже четырёхмерные массивы очень трудно представить в виде графики. Для задания конкретных значений элементам массива, необходимо выполнить действия, аналогичные такому примеру:
1. // начальный элемент массива будет равен пяти
2. myArray[0] = 5;
Ниже пример задания конкретного значения элементу двумерного массива:
1. // указанный элемент массива будет равен десяти
2. myArray[1][3] = 10;
В данном примере выполняется присвоение величины десять одному из элементов двумерного массива myArray, расположенному на второй строке и в четвёртом столбце. Этот массив может быть изображён следующим образом:
Рисунок 2. Массив. Автор24 — интернет-биржа студенческих работ
Необходимо учитывать, что номера расположения элементов в строках и столбцах отсчитываются от нуля. То есть начальный элемент имеет нулевые индексы, поэтому в примере указаны номера один и три, а не два и четыре. И следует помнить, что нельзя выполнять запись данных за последним элементом массива. К примеру, если массив состоит из десяти элементов, то нельзя пытаться назначить какое-то значение элементу с номером десять, поскольку последний элемент в массиве имеет индекс девять. А элемента с номером десять просто нет. При попытке это всё-таки сделать, возможны самые разные последствия, вплоть до порчи работы других программ. Но, обычно, операционная система блокирует неправильные операции такого типа.
Приведём реальный пример применения двумерных массивов в программе:
Рисунок 3. Пример. Автор24 — интернет-биржа студенческих работ
Видим такие итоговые результаты после завершения программы:
CppStudio.com
Сформирован массив:
[0][0]=0 [0][1]=0 [0][2]=0 [0][3]=0 [0][4]=0 [0][5]=0 [0][6]=0 [0][7]=0
[1][0]=0 [1][1]=1 [1][2]=2 [1][3]=3 [1][4]=4 [1][5]=5 [1][6]=6 [1][7]=7
[2][0]=0 [2][1]=2 [2][2]=4 [2][3]=6 [2][4]=8 [2][5]=10 [2][6]=12 [2][7]=14
[3][0]=0 [3][1]=3 [3][2]=6 [3][3]=9 [3][4]=12 [3][5]=15 [3][6]=18 [3][7]=21
[4][0]=0 [4][1]=4 [4][2]=8 [4][3]=12 [4][4]=16 [4][5]=20 [4][6]=24 [4][7]=28
[5][0]=0 [5][1]=5 [5][2]=10 [5][3]=15 [5][4]=20 [5][5]=25 [5][6]=30 [5][7]=35
[6][0]=0 [6][1]=6 [6][2]=12 [6][3]=18 [6][4]=24 [6][5]=30 [6][6]=36 [6][7]=42
[7][0]=0 [7][1]=7 [7][2]=14 [7][3]=21 [7][4]=28 [7][5]=35 [7][6]=42 [7][7]=49
В приведённом выше примере, вначале выполняется заполнение двумерного массива значениями, равными произведению индексов, в строках с восьмой по одиннадцатую. Далее выводится на дисплей его содержимое, это строки с тринадцатой по двадцатую.
Если требуется объявление указателя на массив, то запрещается применять операцию «взять адрес» (&). Рассмотрим пример:
Рисунок 4. Пример. Автор24 — интернет-биржа студенческих работ