Программирование · 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 и внести очень немного связанных изменений. Остальная часть кода остается прежней. Таким образом, в двух словах, вы можете легко справляться с масштабируемостью при использовании массивов по сравнению с подходами, которые мы обсуждали в начале учебника.

Заключение

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

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.