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ță.


Publicitate

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ă.