Масив структур у C
Коли ви маєте справу з великим набором пов’язаних даних і різними типами даних, ефективне впорядкування та керування ними має вирішальне значення. У програмуванні на C поєднання масивів і структур, тобто масив структур, забезпечує потужний інструмент для керування цим. У цій статті ми обговорюємо концепцію масиву структур у C.
Що таке масив?
Масив — це однорідна сукупність елементів, що зберігаються в безперервній області пам’яті. Розмір масиву фіксований, і ми можемо довільно отримувати доступ до елементів, використовуючи їхній індекс.
Оголошення масиву
array_type array_name [size];
Що таке структура?
Структура — це один із визначених користувачем типів даних у C, який може містити елементи різних типів як члени.
Оголошення структури в C
struct structure_name{ memberType memberName; ... ... }; Масив структур
Масив, елементи якого мають структуру типу, називається масивом структури. Зазвичай це корисно, коли нам потрібно кілька структурних змінних у нашій програмі.
Потреба в масиві структур
Припустимо, у нас 50 співробітників, і нам потрібно зберігати дані 50 співробітників. Отже, для цього нам потрібно визначити 50 змінних типу struct Employee і зберігати дані в них. Однак оголошення та обробка 50 змінних не є легким завданням. Уявімо ширший сценарій, наприклад, 1000 співробітників.
Отже, якщо ми оголосимо змінну таким чином, це неможливо впоратися.
struct Employee emp1, emp2, emp3, .. . ... . .. ... emp1000;
Для цього ми можемо визначити масив, тип даних якого буде struct Employee soo, яким буде легко керувати.
Оголошення масиву структур
struct structure_name array_name [number_of_elements];
Ініціалізація масиву структур
Ми можемо ініціалізувати масив структур наступними способами:
struct structure_name array_name [number_of_elements] = { {element1_value1, element1_value2, ....}, {element2_value1, element2_value2, ....}, ...... ...... }; Таку саму ініціалізацію можна виконати так:
struct structure_name array_name [number_of_elements] = { element1_value1, element1_value2 ...., element2_value1, element2_value2 ..... }; Компілятори GNU C підтримують призначену ініціалізацію для структур, тому ми також можемо використовувати це для ініціалізації масиву структур.
struct structure_name array_name [number_of_elements] = { {.element3 = value, .element1 = value, ....}, {.element2 = value, .elementN = value, ....}, ...... ...... }; Приклад масиву структури в C
C
// C program to demonstrate the array of structures> #include> > // structure template> struct> Employee {> > char> Name[20];> > int> employeeID;> > int> WeekAttendence[7];> };> > // driver code> int> main()> {> > // defining array of structure of type Employee> > struct> Employee emp[5];> > > // adding data> > for> (> int> i = 0; i <5; i++) {> > emp[i].employeeID = i;> > strcpy> (emp[i].Name,> 'Amit'> );> > int> week;> > for> (week = 0; week <7; week++) {> > int> attendence;> > emp[i].WeekAttendence[week] = week;> > }> > }> > printf> (> '
'> );> > > // printing data> > for> (> int> i = 0; i <5; i++) {> > printf> (> 'Emplyee ID: %d - Employee Name: %s
'> ,> > emp[i].employeeID, emp[i].Name);> > printf> (> 'Attendence
'> );> > int> week;> > for> (week = 0; week <7; week++) {> > printf> (> '%d '> , emp[i].WeekAttendence[week]);> > }> > printf> (> '
'> );> > }> > > return> 0;> }> |
Вихід
Emplyee ID: 0 - Employee Name: Amit Attendence 0 1 2 3 4 5 6 Emplyee ID: 1 - Employee Name: Amit Attendence 0 1 2 3 4 5 6 Emplyee ID: 2 - Employee Name: Amit Attendence 0 1 2 3 4 5 6 Emplyee ID: 3 - Employee Name: Amit Attendence 0 1 2 3 4 5 6 Emplyee ID: 4 - Employee Name: Amit Attendence 0 1 2 3 4 5 6