Structura ca argument al funcției

Funcția de apel pentru transferul semnificativ copii variabile structurale (sau domeniile sale individuale) conduce la pierderi suplimentare în timp pentru a înregistra o copie a variabilei într-o structură de stivă, dar manipularea copiei nu afectează variabila originală. Din același motiv, funcția returnează o variabilă structură este posibilă (retur imya_strukturnoy_peremennoy). dar este nevoie de costul de cazare în valoarea de retur stivă și apoi copiați din lvalue variabilă stivă de același tip ca și valoarea returnată a funcției.

void f3 (Book); // functie care are un argument „tip de structură de carte»

void f4 (Cartea *); // funcție primește un argument
// „pointer la o carte de tip structură»

Book f (); // funcție returnează o structură de tip de carte

Book * f1 (); // returnează un pointer la o carte de tip structură

carte f2 (); // returnează o referință la o carte de tip structură

Exemple de lucru cu structuri

1. Determinarea complexului de tip structural, reprezentând numărul complex definit în formă algebrică și identificarea variabilelor structurale x, y de tipul:

complex struct

float im; // partea imaginară a numărului

Astfel x.re - accesul la domeniul partea reală a numărului complex X,

y.im - accesul la domeniul părții imaginare a numărului complex y,

Apoi, funcțiile de intrare, de ieșire, adăugarea de numere complexe ar putea arata astfel:

complex struct ; // definirea tip structural

citire complex (); // functie prototip introducerea unui număr complex

void imprimare (complex); // afișare prototip funcție număr complex pe ecran

void add (complex, complex, complex *); // funcția de prototip adăugarea de numere complexe

ADD1 void (complex const, complex const, complex);

c1 complex, c2, c3, c4; // definirea numerelor complexe

c1 = citire (); // apela funcția de intrare

add (c1, c2, c3);

print (c1); cout <<"\t + \t" <

print (c2); cout <<" = " <

print (c1); cout <<"\t + \t" <