Структури часто утворюють масиви. Щоб оголосити масив структур, спочатку необхідно визначити структуру (тобто визначити агрегатний тип даних), а потім оголосити змінну масиву цього ж типу. Наприклад, щоб оголосити 100-елементний масив структур типу addr. який був визначений раніше, напишіть наступне:
Цей вислів створить 100 наборів змінних, кожен з яких організований так, як визначено в структурі addr.
Щоб отримати доступ до певної структури, вказуйте ім'я масиву з індексом. Наприклад, щоб вивести ZIP-код з третьої структури, напишіть наступне:
Як і в інших масивах змінних, в масивах структур індексування починається з 0.
Для довідки. щоб вказати певну структуру, що знаходиться в масиві структур, необхідно вказати ім'я цього масиву з певним індексом. А якщо потрібно вказати індекс певного елемента в структурі, то необхідно вказати індекс цього елемента. Таким чином, в результаті виконання наступного виразу першому символу члена name. що знаходиться в третій структурі з addr_list. присвоюється значення 'X'.
Приклад зі списком розсилки
Вся ця інформація, як показано нижче, знаходиться в масиві структур типу addr:
Зверніть увагу, що поле zip має цілий тип unsigned long. Правда, частіше можна зустріти зберігання поштових кодів, в яких використовуються рядки символів, тому що цей спосіб підходить для поштових кодів, в яких разом з цифрами використовуються і букви (як, наприклад, в Канаді та інших країнах). Однак в нашому прикладі поштовий індекс зберігається у вигляді цілого числа; це робиться для того, щоб показати використання числового елемента в структурі.
Ось main () - перша функція, яка потрібна програмі:
Функція починає виконання з ініціалізації масиву структур, а потім реагує на обраний користувачем пункт меню.
Функція init_list () готує масив структур до використання, обнулити перший байт поля name кожної структури масиву. (У програмі передбачається, що якщо поле name пусте, то елемент масиву не використовується.) А ось сама функція init_list ():
Функція menu_select () виводить меню на екран і повертає те, що вибрав користувач.
Функція enter () підказує користувачеві, що саме потрібно ввести, і зберігає введену інформацію в наступній вільної структурі. Якщо масив заповнений, то виводиться повідомлення Список заповнений. Функція find_free () шукає в масиві структур вільний елемент.
Зверніть увагу, що якщо всі елементи масиву структур зайняті, то find_free () повертає -1. Це зручне число, тому що в масиві немає -1-го елемента.
І остання функція, яка потрібна програмі, - це list (). яка виводить на екран весь список розсилки. Через великого розмаїття комп'ютерних середовищ мову С не визначає стандартну функцію, яка б відправляла висновок на принтер. Однак всі потрібні для цього кошти є у всіх компіляторах С. Можливо, вам самим захочеться зробити так, щоб програма роботи зі списками могла ще і роздруковувати список розсилки.
Нижче програма обробки списку розсилки приведена повністю. Якщо у вас залишилися якісь сумніви щодо її компонентів, введіть програму в комп'ютер і перевірте її роботу, роблячи в програмі зміни і отримуючи відповідні результати.