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
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
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
Matematică,
8 ani în urmă
Istorie,
8 ani în urmă
Fizică,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă