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

В этой продолжающейся серии учебников по программированию на C мы в последнее время обсуждали структуры. Мы уже рассмотрели основы структур, как структуры могут использоваться с функциями, а также концепцию указателей на структуры.
Теперь, расширяя концепцию структур, мы обсудим, как создать массив структур, используя простые для понимания примеры.
Массив структур в языке программирования C
Итак, давайте начнем. Вот простая структура с именем ‘student_details’, которая, как вы можете видеть, может использоваться для хранения номера зачетной книжки и оценок студентов:
struct student_details{
int roll_no;
int marks;
};Теперь, предположим, что всего 5 студентов, и требуется принять ввод от пользователя о деталях этих студентов. Тогда один из способов написать код для этого:
#include
struct student_details{
int roll_no;
int marks;
};
int main()
{
struct student_details obj1;
struct student_details obj2;
struct student_details obj3;
struct student_details obj4;
struct student_details obj5;
...
...
...
Или, возможно, что-то вроде этого:
#include
struct student_details{
int roll_no;
int marks;
};
int main()
{
struct student_details obj1, obj2, obj3, obj4, obj5;
...
...
... Теперь нет ничего плохого в том, чтобы следовать вышеупомянутым подходам. Единственное беспокойство, которое возникает, это то, являются ли эти подходы масштабируемыми. Я имею в виду, что если вместо 5 вам нужно создать, скажем, 50 объектов или экземпляров. В этом случае следование этим подходам определенно сделает написание и обслуживание кода гораздо более сложным.
Так есть ли решение? Что ж, да. Лучший способ - создать массив структуры ‘student_details’. Вот как:
struct student_details obj[5];Следующий код представляет собой полную программу, которая использует этот массив структур:
#include
struct student_details{
int roll_no;
int marks;
};
int main()
{
struct student_details obj[5];
int i;
for(i=0;i<5;i++)
{
printf("\n Введите номер зачетной книжки: ");
scanf("%d", &(obj[i].roll_no));
printf("\n Введите оценки (из 100): ");
scanf("%d", &(obj[i].marks));
}
printf("\n Вот данные, которые вы ввели::");
for(i=0;i<5;i++)
{
printf("\n Номер зачетной книжки: %d", (obj[i].roll_no));
printf("-- Оценки: %d", (obj[i].marks));
}
return 0;
} Итак, здесь мы использовали структуру ‘student_details’, которую мы обсуждали ранее, и создали массив из 5 объектов этого типа. Затем программа запрашивает у пользователя ввод номера зачетной книжки и оценок по одному. Информация, соответствующая каждому студенту, хранится в каждом экземпляре массива структур. И, наконец, сохраненная информация выводится обратно пользователю.
Вот вывод в моем случае:
Введите номер зачетной книжки: 1
Введите оценки (из 100): 67
Введите номер зачетной книжки: 2
Введите оценки (из 100): 73
Введите номер зачетной книжки: 3
Введите оценки (из 100): 56
Введите номер зачетной книжки: 4
Введите оценки (из 100): 52
Введите номер зачетной книжки: 5
Введите оценки (из 100): 85
Вот данные, которые вы ввели::
Номер зачетной книжки: 1-- Оценки: 67
Номер зачетной книжки: 2-- Оценки: 73
Номер зачетной книжки: 3-- Оценки: 56
Номер зачетной книжки: 4-- Оценки: 52
Номер зачетной книжки: 5-- Оценки: 85Используя этот подход, вы можете легко масштабировать свою программу. Это означает, что даже если есть 50 студентов, чью информацию нужно хранить и выводить, вам просто нужно увеличить размер массива до 50 и внести очень немного связанных изменений. Остальная часть кода остается прежней. Таким образом, в двух словах, вы можете легко справляться с масштабируемостью при использовании массивов по сравнению с подходами, которые мы обсуждали в начале учебника.
Заключение
В этом учебнике мы рассмотрели основную концепцию массива структур. Используя простые для понимания примеры, мы обсудили, почему массив структур важен, когда его использовать и как его использовать. Вам рекомендуется попробовать примеры из этого учебника на вашем компьютере. И в случае любых сомнений или вопросов оставьте комментарий ниже.
Get new posts in your inbox
No spam. Unsubscribe anytime.