Folosirea struct în funcții
Utilizarea tipului înregistrare (struct) în subprograme, prin transmiterea ca parametru, se face fără alte particularități de la folosirea obișnuită a acestora.
Astfel, știm cele două moduri de transmitere:
- Prin valoare - se trimite o copie a structurii;
- Prin referință - se trimite adresa structurii originale, deci modificările se reflectă în afara subprogramului.
În alegerea modalității de transmitere, trebuie să ținem cont de structura noastră. Deoarece la transmiterea prin valoare se realizează o copie a variabilei transmise, vom prefera din punct de vedere al eficienței de utilizare a memoriei să transmitem acea structură prin referință.
Sintaxa folosirii în subprograme
Un exemplu de program C++ care utilizează ambele metode de transmitere poate fi analizat pentru a înțelege mai bine comportamentul structurilor:
#include <iostream>
using namespace std;
struct Punct {
float x, y;
};
void citire(Punct &p) {
cout << "x = "; cin >> p.x;
cout << "y = "; cin >> p.y;
}
void afisare(Punct p) {
cout << "Coordonate: (" << p.x << ", " << p.y << ")\n";
}
void mutare(Punct &p, float dx, float dy) {
p.x += dx;
p.y += dy;
}
int main() {
Punct A;
citire(A); // transmitem prin referinta
afisare(A); // transmitem prin valoare
mutare(A, 2, -1); // modificam coordonatele
afisare(A); // vedem modificarea
return 0;
}
> x = 3
> y = 5
Coordonate: (3, 5)
Coordonate: (5, 4)
Modificările realizate în funcția mutare(), unde se transmite structura prin referință, actualizarea coordonatelor se reflectă în memorie la afișarea ulterioară.