Transmiterea parametrilor

Din exemplele anterioare am putut vedea că funcţiile comunică prin intermediul parametrilor unidirecţional, în sensul că aceştia preiau valori prin apel, pe care funcţia le prelucrează. După ce aceasta returnează valoarea determinată şi îşi încheie apelul, aceştia sunt distruşi. Acest mod de comunicare se numeşte transmitere prin valoare. Există, însă, şi posibilitatea ca funcţia să comunice bidirecţional, transmiţând parametrilor formali modificările aduse parametrilor efectivi. Acest mecanism se numeşte transmitere prin adresă. Un exemplu în care acest mecanism se poate dovedi util este funcția următoare, care determină interschimbarea valorilor celor doi parametri formali. void interschimba(int &a, int &b) { int aux; aux=a; a=b; b=aux; } Accesul la adresa parametrilor formali este asigurat de operatorul  &. În acest caz, modificările aduse la nivelul funcției sunt transmise, la încheierea apelului, parametrilor formali. Continuând exemplul, putem scrie următoarea definiție a funcției main: int main { int x, y; cin>>x>>y; if(y<x) interschimba(x,y); cout<<”Iata valorile citite in ordine crescatoare: ”<<x<<’ ’<<y; return 0; } Practic, în acest fel, parametrii formali a și b devin aliasuri ale parametriloc x și y.