Структури як аргументи функцій

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.

Оскільки запис структури дуже часто має значний розмір (може включати в себе масиви елементів, інші структури і т.д.), слід брати до уваги обмеження по пам'яті при виборі соответствуюшей моделі.

Схожі статті