Структура як аргумент функції
Виклик функції з передачею за значенням копії структурної змінної (або її окремих полів) призводить до додаткових втрат часу на запис копії структурної змінної в стек, зате маніпуляції з копією не впливають на вихідну змінну. З тієї ж причини повернення функцією структурної змінної можливий (return імя_структурной_переменной). але вимагає витрат на розміщення в стеку значення, що повертається і подальшого його копіювання з стека в змінну lvalue того ж типу, що й повертається значення функції.
void f3 (Book); // функція, яка отримує аргумент «структура типу Book»
void f4 (Book *); // функція, яка отримує аргумент
// «покажчик на структуру типу Book»
Book f (); // функція повертає структуру типу Book
Book * f1 (); // функція повертає покажчик на структуру типу Book
Book f2 (); // функція повертає посилання на структуру типу Book
Приклади роботи зі структурами
1. Визначення структурного типу complex, що представляє комплексні числа, задані в алгебраїчній формі, і визначення структурних змінних x, y цього типу:
struct complex float im; // уявна частина числа При цьому x.re - доступ до поля дійсної частини комплексного числа x, y.im - доступ до поля уявної частини комплексного числа y, Тоді функції для введення, виведення, складання комплексних чисел можуть виглядати так: struct complex complex read (); // прототип функції введення комплексного числа void print (complex); // прототип функції виведення комплексного числа на екран void add (complex, complex, complex *); // прототип функції складання комплексних чисел void add1 (const complex, const complex, complex); complex c1, c2, c3, c4; // визначення комплексних чисел c1 = read (); // виклик функції введення числа add (c1, c2, c3); print (c1); cout <<"\t + \t" < print (c2); cout <<" = " < print (c1); cout <<"\t + \t" <Схожі статті