logo

Funkcije C++ – prenos po sklicu

Obstaja več načinov, na katere bi lahko podatke (ali spremenljivke) poslali kot argument funkciji. Dva pogosta sta prenos po vrednosti in prenos po sklicu. Prenos po sklicu omogoča funkciji spreminjanje spremenljivke brez ustvarjanja kopije. Deklarirati moramo referenčne spremenljivke. Pomnilniška lokacija posredovane spremenljivke in parametra je enaka. Zato se vsaka sprememba parametra odraža tudi v spremenljivki znotraj njegove nadrejene funkcije. Ta članek se osredotoča na razpravo o tem, kako posredovati spremenljivke s sklicevanjem v C++.

Kaj je Pass by Reference?

Ko je spremenljivka posredovana kot sklic na funkcijo, je naslov spremenljivke shranjen v spremenljivki kazalca znotraj funkcije. Zato je spremenljivka znotraj funkcije vzdevek za posredovano spremenljivko. Zato se bodo vse operacije, izvedene na spremenljivki znotraj funkcije, odražale tudi v klicni funkciji.



  • Ta zmožnost odražanja sprememb lahko vrne več kot eno vrednost s funkcijo.
  • Prav tako bi lahko funkcija void tehnično vrnila vrednost/e s to metodo.

The & Operator (naslov) označuje vrednosti, posredovane s prenosom po sklicu v funkciji. Spodaj je program C++ za implementacijo prehoda po sklicu:

C++

java konstante








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

>

>

Izhod

binarno drevo v Javi
5 4>

Pojasnilo:

  • Najprej je funkcija definirana s povratnim podatkovnim tipom void in sprejme vrednost s sklicevanjem (kot je označeno z & znak naslova v formalnih parametrih).
  • Funkcija zmanjša vrednost svojega formalnega parametra za 1.
  • Za tem, znotraj glavne funkcije, celoštevilska spremenljivka z imenom a se inicializira z vrednostjo 5.
  • Vrednost 'a' je natisnjena na konzoli. Pokliče se funkcija f() in spremenljivka se posreduje kot argument.
  • Znotraj funkcije se vrednost spremenljivke zmanjša za 1.
  • Po vrnitvi iz funkcije se ponovno prikaže vrednost spremenljivke, ki se je izkazala za 1 manj od prvotne vrednosti.

Zato se spremembe spremenljivke, posredovane s sklicevanjem na funkcijo, odražajo v klicni funkciji.

Funkcija zamenjave z uporabo Pass-By-Reference

Funkcija zamenjave zamenja vrednosti dveh spremenljivk, ki ju prejme kot argumenta. Spodaj je program C++ za zamenjavo vrednosti dveh spremenljivk z uporabo prenosa po sklicu.

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

zamenjava niza v Javi
>

>

Izhod:

C++ - Funkcija zamenjave z uporabo Pass-By-Reference

Pojasnilo:

  • Najprej je definiran prototip funkcije (izbirno, če je funkcija definirana pred glavno funkcijo).
  • Znotraj glavne funkcije so vrednosti obeh spremenljivk vzete kot vnos od uporabnika.
  • Vrednosti pred klicem funkcije zamenjave so natisnjene na konzoli.
  • Po tem se vrednosti posredujejo kot argument funkciji zamenjave.
  • Funkcija zamenjave uporablja klic po sklicu in vsebuje kodo za zamenjavo dveh spremenljivk.
  • Po zaključku funkcije se vrednost obeh spremenljivk prikaže v glavni funkciji (po klicu swap).
  • Zamenjane vrednosti se prikažejo na zaslonu.

Prehod mimo reference s kazalci

Prav tako je mogoče posredovati naslov spremenljivke iz klicne funkcije in jih uporabiti kot kazalec znotraj klicane funkcije. To omogoča nekoliko bolj eksplicitno spreminjanje vrednosti spremenljivk v funkciji.

Spodaj je program C++ za implementacijo prehoda po sklicu s kazalci:

sql count distinct

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

>

>

Izhod

5 4>

Pojasnilo:

  • Najprej je funkcija definirana s povratnim podatkovnim tipom void in sprejme vrednost kot kazalce (kot je označeno z * zvezdica podpišite formalne parametre).
  • Funkcija zmanjša vrednost svojega formalnega parametra za 1.
  • Nato se znotraj glavne funkcije inicializira celoštevilska spremenljivka z imenom 'a' z vrednostjo 5.
  • Nato se prikaže ta vrednost. Funkcija se pokliče in naslov spremenljivke se posreduje kot argument.
  • Znotraj funkcije se vrednost spremenljivke kazalca zmanjša za 1.
  • Po vrnitvi iz funkcije se ponovno prikaže vrednost spremenljivke, ki se je izkazala za 1 manj od prvotne vrednosti.