Informatică, întrebare adresată de McKenzy, 9 ani în urmă

Salut! Ati putea sa imi spuneti va rog, in functia:
int f(int &a, int b) {
a++; b++;
return (a > b) ? a + b : a - b;
Care este rolul "&" inainte de a? Dupa aceasta functie am alta functie in care folosesc cele doua variabile, dar ce semnifica acea"&", deoarece am observat ca daca elimin acel semn schimba rezultatul. Multumesc!

Răspunsuri la întrebare

Răspuns de Utilizator anonim
2
Parametrii unei functii ( in cazul tau functia "f" cu parametrii "a" si "b") se pot transmite in trei moduri ( prin valoare , prin referinta sau prin pointeri ) . Pe tine te-ar interesa doar primele doua in acest caz.

La transmiterea prin valoare ( fara & , cum este parametrul "b" in acest exemplu )  , valoarea variabilei transmise nu este modificata la sfarsitul executiei functiei . 

Spre exemplu ai functia urmatoare 
        int aduna_unu ( int a) {     //Functia ii aduna 1 variabilei a ;
                    a=a+1;    }              // sau a++; sau a+=1; etc 

Si apelul :   int a=13; //Declar variabila si o initializez cu 13 
                    aduna_unu(a);
                   cout<<a;       //Functia va afisa tot 13 deoarece nu se modifica valoarea lui a dupa executie 


La transmiterea prin referinta (cea cu & , parametrul "a" din exemplul tau ) se modifica valoarea lui a dupa executia programului 
   
    Spre exemplu , aceeasi functie doar ca vom adauga & in fata lui "a"
 
int adauga_unu (int &a){             //Functia face acelasi lucru 
               a=a+1;}

Si apelul : int a=13 ;   //Declararea 
                 adauga_unu(a);
                 cout<<a;    //Programul afiseaza 14 deoarece valoarea lui a s-a modificat dupa executia functiei.

Sper sa intelegi 


McKenzy: Am înțeles! Mulțumesc frumos pentru explicație!
Alte întrebări interesante