
Двумерные массивы.
Язык С допускает многомерные массивы, простейшей формой которых является двумерный массив. Можно сказать, что двумерный массив – это массив одномерных массивов. Размерность массива определяется количеством индексов, используемых для ссылки на конкретный элемент массива.
Двумерный массив int a[3][4] можно представить в виде таблички:
|
Первый индекс |
|||
|
a[0][0] |
a[0][1] |
a[0][2] |
a[0][3] |
Второй индекс |
a[1][0] |
a[1][1] |
a[1][2] |
a[1][3] |
|
a[2][0] |
a[2][1] |
a[2][2] |
a[2][3] |
Первый индекс – номер строки, второй индекс – номер столбца. Количество байт памяти, которое необходимо для хранения массива, вычисляется по формуле
Колич. байт = <размер типа данных>*<колич. строк>*<колич. столбцов>
В памяти компьютера массив располагается непрерывно по строкам, т.е.
a[0][0], a[0][1], a[0][2], a[0][3], a[1][0], a[1][1], a[1][2], a[2][1], ..., a[2][3].
Следует помнить, что память для всех массивов, которые определены как глобальные, отводится в процессе компиляции и сохраняется все время, пока работает программа.
Часто двумерные массивы используются для работы с таблицами, содержащими текстовую информацию. Также очень часто используются массивы строк.
Пример:
#include<stdio.h>
#include<string.h>
void main( )
{
char text[5][20];
strcpy (text[0], "Turbo Basic");
strcpy (text[1], "Turbo Pascal");
strcpy (text[2], "Borland C++");
strcpy (text[3], "Turbo Prolog");
strcpy (text[4], "Paradox");
}
В результате заполнен массив text[][]. Обратите внимание на то, что в функции strcpy() в массиве используется только первый индекс!
Заполнение массива иллюстрирует следующая таблица:
T |
u |
r |
b |
o |
|
B |
a |
s |
i |
c |
\0 |
|
|
|
|
|
|
|
|
T |
u |
r |
b |
o |
|
P |
a |
s |
c |
a |
l |
\0 |
|
|
|
|
|
|
|
B |
o |
r |
l |
a |
n |
d |
|
C |
+ |
+ |
\0 |
|
|
|
|
|
|
|
|
T |
u |
r |
b |
o |
|
P |
r |
o |
l |
o |
g |
\0 |
|
|
|
|
|
|
|
P |
a |
r |
a |
d |
o |
x |
\0 |
|
|
|
|
|
|
|
|
|
|
|
|