Există mai multe moduri prin care datele (sau variabilele) pot fi trimise ca argument la o funcție. Două dintre cele comune sunt Trecerea prin valoare și Trecere prin referință. Trecerea prin referință permite unei funcții să modifice o variabilă fără a crea o copie. Trebuie să declarăm variabilele de referință. Locația de memorie a variabilei și a parametrului transmis este aceeași. Prin urmare, orice modificare a parametrului se reflectă și în variabila din interiorul funcției părinte. Acest articol se concentrează pe discutarea modului de transmitere a variabilelor prin referință în C++.
Ce este o trecere prin referință?
Când o variabilă este transmisă ca referință la o funcție, adresa variabilei este stocată într-o variabilă pointer în interiorul funcției. Prin urmare, variabila din interiorul funcției este un alias pentru variabila transmisă. Prin urmare, orice operații efectuate asupra variabilei din interiorul funcției se vor reflecta și în funcția de apelare.
- Această capacitate de a reflecta modificările ar putea returna mai mult de o valoare de către o funcție.
- De asemenea, o funcție void ar putea returna din punct de vedere tehnic o valoare/e folosind această metodă.
The & operatorul (adresa) denotă valorile transmise prin trecere prin referință într-o funcție. Mai jos este programul C++ pentru implementarea trecerii prin referință:
C++
sqrt java matematică
// C++ program to implement> // pass-by-reference> #include> using> namespace> std;> > void> f(>int> & x)> {> >x--;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(a);> >cout << a << endl;> }> |
>
>Ieșire
5 4>
Explicaţie:
- În primul rând, o funcție este definită cu tipul de date return void și ia valoare prin referință (așa cum este indicată de & semnul adresei în parametrii formali).
- Funcția decrește valoarea parametrului său formal cu 1.
- După care, în interiorul funcției principale, o variabilă întreagă numită A este inițializată cu valoarea 5.
- Valoarea lui „a” este imprimată pe consolă. Funcția f() este apelată, iar variabila este transmisă ca argument.
- În interiorul funcției, valoarea variabilei este decrementată cu 1.
- La întoarcerea din funcție, valoarea variabilei este din nou afișată, care s-a dovedit a fi cu 1 mai mică decât valoarea inițială.
Prin urmare, modificările unei variabile transmise prin referire la o funcție sunt reflectate în funcția de apelare.
cuvânt cheie static în java
Funcția de schimb folosind Pass-By-Reference
Funcția swap schimbă valorile celor două variabile pe care le primește ca argumente. Mai jos este programul C++ pentru a schimba valorile a două variabile folosind trecerea la referință.
C++
// C++ program to swap the values> // of two variables using> // pass-by-reference> #include> > // Prototype of the function> void> swap(>int> &,>int> &);> > // Driver code> int> main()> {> >int> x, y;> > >// Inputting two variables> >printf>(>'Enter the value of x and y
'>);> >scanf>(>'%d%d'>, &x, &y);> > >// Displaying their values before swapping> >printf>(>'Before Swapping
x = %d
y = %d
'>,> >x, y);> > >// Calling the function & sending variable> >// values as argument> >swap(x, y);> > >// Displaying their values after swapping> >printf>(>'After Swapping
x = %d
y = %d
'>,> >x, y);> >return> 0;> }> > // Function uses pass by reference method> // to swap passed variable values> void> swap(>int> &a,>int> &b)> {> >int> temp;> > >temp = b;> >b = a;> >a = temp;> }> |
pawandeep rajan
>
>
Ieșire:
Explicaţie:
- În primul rând este definit prototipul funcției (opțional dacă funcția este definită înaintea funcției principale).
- În interiorul funcției principale, valorile celor două variabile sunt luate ca intrare de la utilizator.
- Valorile înainte de apelarea funcției de swap sunt tipărite pe consolă.
- După care, valorile sunt transmise ca argument la funcția de swap.
- Funcția de schimb utilizează apelul prin referință și conține codul pentru schimbarea celor două variabile.
- La finalizarea funcției, valoarea celor două variabile este afișată în funcția principală (după apelul la swap).
- Valorile schimbate sunt afișate pe ecran.
Treceți prin referință cu indicatori
Este, de asemenea, posibil să treceți adresa variabilei de la funcția de apelare și să le folosiți ca indicator în interiorul funcției apelate. Acest lucru permite un pic mai explicit modificarea valorilor variabilelor din funcție.
Mai jos este programul C++ pentru a implementa trecerea cu referință cu pointeri:
C++
cat de mare este ecranul monitorului meu
// C++ program to implement> // pass-by-reference with> // pointers> #include> using> namespace> std;> > void> f(>int> *x)> {> >*x = *x - 1;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(&a);> >cout << a << endl;> }> |
>
>Ieșire
5 4>
Explicaţie:
- În primul rând, o funcție este definită cu tipul de date return void și ia valoare ca indicatori (după cum este indicat de * asterisc semnează în parametrii formali).
- Funcția decrește valoarea parametrului său formal cu 1.
- După care, în interiorul funcției principale, o variabilă întreagă numită „a” este inițializată cu valoarea 5.
- Apoi se afișează această valoare. Funcția este apelată și adresa variabilei este transmisă ca argument.
- În interiorul funcției, valoarea variabilei indicator este decrementată cu 1.
- La întoarcerea din funcție, valoarea variabilei este din nou afișată, care s-a dovedit a fi cu 1 mai mică decât valoarea inițială.