Программирование · 2 min read · Feb 14, 2026

Учебник по программированию на C для Linux Часть 7: Массивы

Итак, мы уже обсудили концепцию переменных в программировании на C (здесь и здесь). Чтобы быстро освежить в памяти, переменная — это нечто, что может хранить значение определенного типа — это может быть целое число, символ или даже число с плавающей запятой. Однако у переменных есть одно ограничение: они могут хранить только одно значение в любой момент времени.

Это означает, что если вы хотите хранить несколько значений, вам придется иметь равное количество переменных. Например, если вы хотите, чтобы программа принимала 10 целых чисел от пользователя и затем выводила их, то вы можете написать это следующим образом:

#include   
  
int main()  
{  
 int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;  
 printf("Введите 10 целых чисел\n");  
 scanf("%d",&a);  
 scanf("%d",&b);  
 scanf("%d",&c);  
 scanf("%d",&d);  
 scanf("%d",&e);  
 scanf("%d",&f);  
 scanf("%d",&g);  
 scanf("%d",&h);  
 scanf("%d",&i);  
 scanf("%d",&j);  
   
 printf("Вы ввели следующие значения:\n");  
 printf("%d\n",a);  
 printf("%d\n",b);  
 printf("%d\n",c);  
 printf("%d\n",d);  
 printf("%d\n",e);  
 printf("%d\n",f);  
 printf("%d\n",g);  
 printf("%d\n",h);  
 printf("%d\n",i);  
 printf("%d\n",j);  
   
  
 return 0;  
}

Или следующим образом:

#include   
  
int main()  
{  
 int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;  
   
 printf("Введите 10 целых чисел\n");  
 scanf("%d %d %d %d %d %d %d %d %d %d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j);  
   
 printf("Вы ввели следующие значения:\n");  
 printf("%d %d %d %d %d %d %d %d %d %d\n",a,b,c,d,e,f,g,h,i,j);  
   
  
 return 0;  
}

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

Да, если есть необходимость хранить несколько значений одного типа, то вам следует выбрать массив. Вот как определяется целочисленный массив, способный хранить 10 значений:

int arr[10]

Здесь ‘int’ относится к типу значений, которые массив ‘arr’ будет хранить. Число 10 в квадратных скобках указывает, что емкость ‘arr’ составляет 10 значений. Теперь вот кусок кода, использующий этот массив:

#include   
  
int main()  
{  
 int arr[10],i;  
   
 printf("Введите 10 целых чисел\n");  
   
 for(i=0;i<10;i++)  
 scanf("%d",&(arr[i]));  
   
 printf("Вы ввели следующие значения:\n");  
   
 for(i=0;i<10;i++)  
 printf("%d\n",arr[i]);  
   
  
 return 0;  
}

Обратите внимание, что мы уже обсуждали функции scanf и printf в одном из наших предыдущих учебников, поэтому вы можете обратиться к этим статьям, если хотите узнать больше о них.

Возвращаясь к массивам, вы могли заметить, что цикл ‘for’ в приведенном выше коде начинается с i=0. Это потому, что индексы массива (число внутри квадратных скобок) всегда начинаются с нуля. Таким образом, в нашем случае arr[0] относится к первому значению, введенному пользователем, arr[1] относится ко второму значению и так далее, пока arr[9] не будет относиться к 10-му значению.

Также стоит упомянуть, что вы можете легко получить доступ к адресу памяти каждого значения, хранящегося в массиве. Это можно сделать, используя имя массива, которое в данном случае ‘arr’. Так что если вы просто используете ‘arr’ в коде, то это ничего иное, как адрес памяти первого элемента.

Аналогично, если вы хотите получить доступ к адресу памяти второго элемента, просто используйте ‘arr+1’. Для третьего элемента используйте ‘arr+2’ и так далее. Следующий кусок кода и его вывод должны дать вам лучшее представление.

#include   
  
int main()  
{  
 int arr[10],i;  
   
 printf("Адреса первого и второго значений: %u %u\n", arr, arr+1);  
   
 return 0;  
}

А вот и вывод:

Адреса первого и второго значений: 2904035888 2904035892

Как вы можете видеть, между этими адресами разница в 4 байта — это потому, что одно целое число занимает 4 байта в моей системе.

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

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.