Язык С позволяет создавать многомерные массивы. Простейшим видом многомерного массива является двухмерный массив. Двухмерный массив – это массив одномерных массивов. Двухмерный массив объявляется следующим образом:
тип имя_массива[размер1][размер2];
Следовательно, для объявления двухмерного массива целых чисел с размером 10 и 20 следует написать:
int d[10][20];
Посмотрим внимательно на это объявление. В противоположность другим языкам программирования, где размерности массива отделяются запятой, язык С помещает каждую размерность в отдельные скобки.
Для доступа к элементу в 3 строке 5 столбце массива d следует использовать
d[2][4] (Не забываем что в массивах индексация начинается с нуля)
В следующем примере вводится по строкам двухмерный массив и затем выводится построчно на экран.
Пример.
#include <stdio.h>
#include <conio.h>
main()
{
int i, j, num[3][4];
char ch;
for (i=0; i<3; i++)
{
printf(“Введите элементы %d строки: “, i+1);
for (j=0; j<4; j++)
scanf(“%d”, &num[i][j]);
}
for (i=0; i<3; i++)
{
for (j=0; j<4; j++)
printf(“%d “, num[i][j]);
printf(“\n”);
}
return 0;
}
Двухмерные массивы можно представить в виде матрицы, где первый индекс отвечает за строку, а второй – за столбец. Это означает, что правый индекс изменяется быстрее левого, если двигаться по массиву в порядке расположения элементов в памяти. На рисунке 1 показано графическое представление двухмерного массива в памяти.
[0][0]
[0][1]
[0][2]
[0][3]
[0][4]
[0][5]
[0][6]
[0][7]
[1][0]
[1][1]
[1][2]
[1][3]
[1][4]
[1][5]
[1][6]
[1][7]
[2][0]
[2][1]
[2][2]
[2][3]
[2][4]
[2][5]
[2][6]
[2][7]
[3][0]
[3][1]
[3][2]
[3][3]
[3][4]
[3][5]
[3][6]
[3][7]
[4][0]
[4][1]
[4][2]
[4][3]
[4][4]
[4][5]
[4][6]
[4][7]
Рисунок 1 – Размещение двухмерного массива в памяти