Программирование · 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 байта в моей системе.
В этом учебнике мы обсудили основы массивов. Обратите внимание, что мы привели пример только целочисленного массива. Вы можете иметь массив других типов, например, символов. Попробуйте примеры, которые мы использовали в этом учебнике, и дайте нам знать в комментариях ниже, если у вас есть какие-либо сомнения или вопросы.
Get new posts in your inbox
No spam. Unsubscribe anytime.