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

Функция повикване за трансфер значение копия структурна променлива (или отделни нейни области) води до допълнителни загуби във времето, за да запишете копие на променливата в структура стек, но манипулиране на копието не се отразява на оригиналната стойност. По същата причина, функцията връща променлива структура е възможно (връщане imya_strukturnoy_peremennoy). но изисква разходите за настаняване в стойността на стека връщане и след това да го копирате от променлива lvalue купчина от същия тип като върнатата стойност на функцията.

невалидни f3 (книга); // функция, която приема аргумент "тип структура на книгата»

невалидни f4 (Book *); // функция получава аргумент
// "указател към структура тип книга»

Book е (); // функция връща структура от типа на книги

Book * f1 (); // Функцията връща указател към тип структура Резервирай

книга f2 (); // функция връща препратка към тип структура Резервирай

Примери за работа със структурите

1. Определяне на структурен тип комплекс, представляващ комплекс число, определено в алгебрични форма и идентифициране структурните променливите х, у от типа:

структура на комплекс

поплавък им; // имагинерната част на броя

Така x.re - достъп до областта на реалната част на комплексно число х,

y.im - достъп до областта на имагинерната част на комплексното число у,

Тогава функциите за вход, изход, освен на комплексни числа може да изглежда така:

структура на комплекс ; // определение на структурен тип

комплекс четене (); // функция прототип въвеждане на комплексно число

нищожен печат (комплекс); // функция дисплей прототип комплексно число на екрана

нищожен добавка (комплекс, комплекс, комплекс *); // функция прототип на прибавяне на комплексни числа

невалидни ADD1 (конст сложни, конст комплекс, комплекс);

комплекс С1, С2, С3, С4; // определение на комплексни числа

С1 = четене (); // наричаме функцията на вход

добави (В1, В2, С3);

печат (C1); Cout <<"\t + \t" <

печат (c2); Cout <<" = " <

печат (C1); Cout <<"\t + \t" <