Структури як аргументи функцій
int nVar; long 1Var; short shVar; unsigned int uiVar;
прототип функції буде, наприклад, мати вигляд: void Func (ALLNUMB);
При цьому відбувається передача в тіло функції параметра типу структури за значенням. Таким чином, оригінал структурованого об'єкта модифікації не підлягає. Функція може також повертати об'єкт типу структури:
В цьому випадку модифіковані дані при виході з функції не загубляться, а будуть передані в точку виклику функції.
Розглянемо приклад передачі в функцію описаної раніше структури House для виведення на екран назви вулиці і номера будинку, що містяться в ній.
unsigned short RegNum;
unsigned short MaxFloorNum;
unsigned short MaxFlatNum;
strcpy (MyHouse.Street, "вул. Гоголя");
void OutAddress (HOUSE house)
cout «house.Street« ","; cout «house.HouseNum« '\ n';
Виклик функції OutAddress (MyHouse) передає у тіло сформовану структуру, доступ до членів якої здійснюється відповідно до описаного вище правилом, через символ 'точка' (.). В результаті на екран буде виведено:
масиви структур
Сама по собі одна єдина запис типу структури в більшості випадків навряд чи може викликати підвищений інтерес. Однак в разі, коли структуровані дані об'єднуються в масиви, мова йде вже не про одиничний об'єкт, а про цілу базі даних.
Доступ до елементів такого масиву здійснюється звичайним способом, наприклад, за індексом (індексація ведеться, починаючи з нуля). Наступний фрагмент коду здійснює в циклі впорядковане заповнення номерів будинків структури HOUSE, а потім виводить записані дані в стовпчик на екран:
for (int i = 0; i<30; i++)
for (int i = 0; i<30; i++)
cout «mDistrfi] .HouseNum« '\ n';
Нагадаємо, що для роботи функції перетворення цілого числа в рядок символів itoa () необхідно підключити модуль stdlib.h.
Оскільки запис структури дуже часто має значний розмір (може включати в себе масиви елементів, інші структури і т.д.), слід брати до уваги обмеження по пам'яті при виборі соответствуюшей моделі.