logo

Funkcie jazyka C++ – Pass By Reference

Existuje niekoľko spôsobov, ako môžu byť údaje (alebo premenné) odoslané ako argument funkcie. Dve z bežných sú Passing by Value a Passing by Reference. Odovzdanie odkazom umožňuje funkcii upraviť premennú bez vytvorenia kópie. Musíme deklarovať referenčné premenné. Pamäťové umiestnenie odovzdávanej premennej a parametra je rovnaké. Preto sa každá zmena parametra prejaví aj v premennej vnútri jej nadradenej funkcie. Tento článok sa zameriava na diskusiu o tom, ako odovzdať premenné odkazom v C++.

Čo je to Pass by Reference?

Keď sa premenná odovzdá ako odkaz na funkciu, adresa premennej sa uloží do premennej ukazovateľa vo funkcii. Preto je premenná vo funkcii aliasom odovzdanej premennej. Preto sa všetky operácie vykonané s premennou vo vnútri funkcie prejavia aj vo volajúcej funkcii.



  • Táto schopnosť odrážať zmeny môže funkciou vrátiť viac ako jednu hodnotu.
  • Tiež funkcia void by mohla technicky vrátiť hodnotu/y pomocou tejto metódy.

The & Operátor (adresa) označuje hodnoty odovzdané cez odkaz vo funkcii. Nižšie je uvedený program C++ na implementáciu pass-by-reference:

C++

hashtable versus hashmap








// 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;> }>

>

>

Výkon

5 4>

Vysvetlenie:

  • Po prvé, funkcia je definovaná s návratovým dátovým typom void a nadobúda hodnotu odkazom (ako je označené ako & znak adresy vo formálnych parametroch).
  • Funkcia zníži hodnotu svojho formálneho parametra o 1.
  • Potom je vo vnútri hlavnej funkcie pomenovaná celočíselná premenná a inicializuje sa hodnotou 5.
  • Hodnota „a“ je vytlačená na konzole. Zavolá sa funkcia f() a premenná sa odovzdá ako argument.
  • Vo vnútri funkcie sa hodnota premennej zníži o 1.
  • Po návrate z funkcie sa opäť zobrazí hodnota premennej, ktorá sa ukázala byť o 1 menšia ako pôvodná hodnota.

Preto sa zmeny premennej odovzdané odkazom na funkciu prejavia vo volajúcej funkcii.

reťazec java concat

Swap funkciu pomocou Pass-By-Reference

Funkcia swap zamieňa hodnoty dvoch premenných, ktoré dostane ako argumenty. Nižšie je uvedený program C++ na výmenu hodnôt dvoch premenných pomocou odkazu pass-by-reference.

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;> }>

návod na programovací jazyk java
>

>

Výkon:

C++ - Swap funkcia pomocou Pass-By-Reference

Vysvetlenie:

  • Najprv je definovaný prototyp funkcie (voliteľné, ak je funkcia definovaná pred hlavnou funkciou).
  • Vo vnútri hlavnej funkcie sa hodnoty dvoch premenných berú ako vstup od používateľa.
  • Hodnoty pred volaním funkcie swap sú vytlačené na konzole.
  • Potom sa hodnoty odovzdajú ako argument do funkcie swap.
  • Funkcia swap využíva call-by-reference a obsahuje kód na výmenu dvoch premenných.
  • Po dokončení funkcie sa hodnota dvoch premenných zobrazí v hlavnej funkcii (po výzve na swap).
  • Vymenené hodnoty sa zobrazia na obrazovke.

Prejdite odkazom pomocou ukazovateľov

Je tiež možné odovzdať adresu premennej z volajúcej funkcie a použiť ju ako ukazovateľ vo vnútri volanej funkcie. To umožňuje trochu explicitnejšie pri zmene hodnôt premenných vo funkcii.

Nižšie je uvedený program C++ na implementáciu prechodového odkazu s ukazovateľmi:

C++




// 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;> }>

>

užívateľské meno

>

Výkon

5 4>

Vysvetlenie:

  • Po prvé, funkcia je definovaná s návratovým dátovým typom void a nadobúda hodnotu ako ukazovatele (ako je označené * hviezdička podpísať formálne parametre).
  • Funkcia zníži hodnotu svojho formálneho parametra o 1.
  • Potom sa vo vnútri hlavnej funkcie inicializuje celočíselná premenná s názvom „a“ s hodnotou 5.
  • Potom sa zobrazí táto hodnota. Funkcia sa zavolá a adresa premennej sa odovzdá ako argument.
  • Vo vnútri funkcie sa hodnota premennej ukazovateľa zníži o 1.
  • Po návrate z funkcie sa opäť zobrazí hodnota premennej, ktorá sa ukázala byť o 1 menšia ako pôvodná hodnota.