Программирование · 3 min read · Nov 19, 2025
Учебник по программированию на C для Linux Часть 24 - Многомерные массивы

Если вы следите за этой продолжающейся серией учебников по программированию на C, вы, вероятно, знакомы с концепцией массивов. Чтобы быстро освежить в памяти, массивы используются для хранения нескольких значений одного типа в непрерывной памяти.
Многомерные массивы в C
Например, следующий массив целых чисел способен хранить 5 чисел.
int arr[5]Любое значение, хранящееся в массиве, можно легко получить, используя имя массива и соответствующее значение индекса. Поскольку индексы начинаются с 0, скажем, если вы хотите получить доступ ко второму элементу в массиве, вы можете сделать это следующим образом:
arr[1]Следующая программа принимает 5 целых чисел от пользователя в качестве ввода, хранит их в массиве, а затем выводит их обратно пользователю.
#include
int main()
{
int arr[5],i;
printf("Введите 5 целых чисел\n");
for(i=0;i<5;i++)
scanf("%d",&(arr[i]));
printf("Вы ввели следующие значения:\n");
for(i=0;i<5;i++)
printf("%d\n",arr[i]);
return 0;
} Теперь этот тип массива известен как одномерный массив. Да, это означает, что также существуют многомерные массивы - двумерные массивы, трехмерные массивы и так далее. Например, следующий массив является двумерным:
int arr[2][3]Вы можете визуализировать этот массив как 2-D таблицу чисел с 2 строками и 3 столбцами - что-то вроде следующего:
x x x
x x x Таким образом, всего 6 элементов, которые этот массив может содержать. Стоит упомянуть, что общее количество элементов, которые массив может содержать, можно легко вычислить, умножив индексы в объявлении массива. Например, в случае ‘arr’ емкость массива можно вычислить, умножив 2 на 3, что равно 6.
Что касается инициализации, двумерный массив, такой как ‘arr’, можно инициализировать следующим образом:
int arr [2][3] = {1,2,3,4,5,6}Поскольку такая инициализация затрудняет визуализацию этих значений в двумерном массиве, есть другой (читай: лучший) способ, который вы можете выбрать. Вот он:
int arr [2][3] = { {1,2,3}, {4,5,6} };Теперь легко визуализировать, что числа 1,2,3 находятся в одной строке, а 4,5,6 - в другой. Вот так:
1 2 3
4 5 6Что касается работы с двумерным массивом в C, следующая небольшая программа принимает эти 6 значений от пользователя, хранит их в двумерном массиве ‘arr’, а затем, наконец, выводит их обратно пользователю:
#include
int main()
{
int arr[2][3],i,j;
printf("Вы собираетесь ввести значения для массива 2x3\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("\n Введите значение, которое будет храниться в строке %d и столбце %d :: ",i,j);
scanf("%d",&arr[i][j]);
}
}
printf("\n Вы ввели следующие значения:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("\n Строка %d и столбец %d = %d\n",i,j,arr[i][j]);
}
}
return 0;
} А вот и вывод:
Вы собираетесь ввести значения для массива 2x3
Введите значение, которое будет храниться в строке 0 и столбце 0 :: 1
Введите значение, которое будет храниться в строке 0 и столбце 1 :: 2
Введите значение, которое будет храниться в строке 0 и столбце 2 :: 3
Введите значение, которое будет храниться в строке 1 и столбце 0 :: 4
Введите значение, которое будет храниться в строке 1 и столбце 1 :: 5
Введите значение, которое будет храниться в строке 1 и столбце 2 :: 6
Вы ввели следующие значения:
Строка 0 и столбец 0 = 1
Строка 0 и столбец 1 = 2
Строка 0 и столбец 2 = 3
Строка 1 и столбец 0 = 4
Строка 1 и столбец 1 = 5
Строка 1 и столбец 2 = 6Итак, это была базовая информация о двумерных массивах. А что насчет 3-D массивов? Что ж, по тем же принципам вы можете определять и инициализировать трехмерные массивы. Вот пример:
int arr[2][3][4]Как же визуализировать этот массив? Что ж, подумайте о трехмерном мире (мире, в котором мы живем), а затем визуализируйте три перпендикулярные друг другу оси. Вот как три измерения этого массива вписываются.
Обладая емкостью 24 элемента (2x3x4), этот массив можно инициализировать следующим образом:
int x[2][3][4] =
{
{ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} },
{ {13,14,15,16}, {17,18,19,20}, {21,22,23,24} }
};А вот программа на C, использующая 3-D массив:
#include
int main()
{
int arr[2][3][4],i,j,k;
printf("Вы собираетесь ввести значения для массива 2x3x4\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<4;k++)
{
printf("\n Введите значение, которое будет храниться в arr[%d][%d][%d] :: ",i,j,k);
scanf("%d",&arr[i][j][k]);
}
}
}
printf("\n Вы ввели следующие значения:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<4;k++)
{
printf("\n arr[%d][%d][%d] = %d\n",i,j,k,arr[i][j][k]);
}
}
}
return 0;
} Заключение
В этом учебнике мы расширили наше существующее понимание массивов, обсудив концепцию многомерных массивов. Вам рекомендуется попробовать примеры, использованные в этом учебнике, на вашей системе (а также создать новые), чтобы лучше понять, как работают эти массивы. В случае возникновения каких-либо сомнений или вопросов оставьте комментарий ниже.
Get new posts in your inbox
No spam. Unsubscribe anytime.