Программирование · 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;  
}

Заключение

В этом учебнике мы расширили наше существующее понимание массивов, обсудив концепцию многомерных массивов. Вам рекомендуется попробовать примеры, использованные в этом учебнике, на вашей системе (а также создать новые), чтобы лучше понять, как работают эти массивы. В случае возникновения каких-либо сомнений или вопросов оставьте комментарий ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.