logo

C++ funkcijas — iet caur atsauci

Ir vairāki veidi, kā datus (vai mainīgos) var nosūtīt kā argumentu funkcijai. Divas no izplatītākajām ir “Passing by Value” un “Passing by reference”. Nodošana ar atsauci ļauj funkcijai modificēt mainīgo, neizveidojot kopiju. Mums ir jādeklarē atsauces mainīgie. Nodotā ​​mainīgā un parametra atmiņas vieta ir vienāda. Tāpēc jebkuras parametra izmaiņas tiek atspoguļotas arī mainīgajā tās vecākfunkcijā. Šajā rakstā galvenā uzmanība tiek pievērsta tam, kā C++ valodā nodot mainīgos ar atsauci.

Kas ir atsauce?

Kad mainīgais tiek nodots kā atsauce uz funkciju, mainīgā adrese tiek saglabāta rādītāja mainīgajā funkcijas iekšpusē. Tādējādi mainīgais funkcijas iekšpusē ir nodotā ​​mainīgā aizstājvārds. Tāpēc visas darbības, kas veiktas ar mainīgo funkcijā, tiks atspoguļotas arī izsaukšanas funkcijā.



  • Šī spēja atspoguļot izmaiņas var atgriezt vairāk nekā vienu funkcijas vērtību.
  • Turklāt, izmantojot šo metodi, tukšuma funkcija var tehniski atgriezt vērtību/-as.

The & (adreses) operators apzīmē vērtības, kas funkcijā ir nodotas garāmejot. Zemāk ir C++ programma, lai ieviestu garāmgājēju atsauci:

C++

np.log








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

>

>

Izvade

java garš līdz virknei
5 4>

Paskaidrojums:

  • Pirmkārt, funkcija tiek definēta ar atgriešanās datu tipu void un iegūst vērtību ar atsauci (kā apzīmēta ar & adreses zīme formālos parametros).
  • Funkcija samazina tās formālā parametra vērtību par 1.
  • Pēc tam galvenās funkcijas iekšpusē tiek nosaukts vesels mainīgais a tiek inicializēts ar vērtību 5.
  • “a” vērtība tiek uzdrukāta uz konsoles. Tiek izsaukta funkcija f(), un mainīgais tiek nodots kā arguments.
  • Funkcijas iekšpusē mainīgā vērtība tiek samazināta par 1.
  • Atgriežoties no funkcijas, atkal tiek parādīta mainīgā vērtība, kas izrādījās par 1 mazāka nekā sākotnējā vērtība.

Tādējādi izmaiņas mainīgajā, kas nodotas, atsaucoties uz funkciju, tiek atspoguļotas izsaukšanas funkcijā.

Apmainīt funkciju, izmantojot caurlaides atsauci

Mijmaiņas funkcija apmaina ar divu mainīgo vērtībām, ko tā saņem kā argumentus. Zemāk ir C++ programma, lai apmainītos ar divu mainīgo vērtībām, izmantojot atsauci.

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

normālas formas
>

>

Izvade:

C++ — maiņas funkcija, izmantojot caurlaides atsauci

Paskaidrojums:

  • Vispirms tiek definēts funkcijas prototips (pēc izvēles, ja funkcija ir definēta pirms galvenās funkcijas).
  • Galvenās funkcijas ietvaros divu mainīgo vērtības tiek ņemtas kā ievade no lietotāja.
  • Vērtības pirms mijmaiņas funkcijas izsaukšanas tiek izdrukātas konsolē.
  • Pēc tam vērtības tiek nodotas kā arguments mijmaiņas funkcijai.
  • Mijmaiņas funkcija izmanto zvanu pēc atsauces un satur kodu abu mainīgo lielumu apmaiņai.
  • Pēc funkcijas pabeigšanas abu mainīgo lielumu vērtība tiek parādīta galvenajā funkcijā (pēc aicinājuma veikt mijmaiņu).
  • Apmainītās vērtības tiek parādītas ekrānā.

Iet garām atsaucei ar rādītājiem

Ir iespējams arī nodot mainīgo adresi no izsaucošās funkcijas un izmantot to kā rādītāju izsauktās funkcijas iekšpusē. Tas ļauj nedaudz skaidrāk mainīt mainīgās vērtības funkcijā.

Zemāk ir C++ programma, lai ieviestu garāmgājēju atsauci ar norādes:

C++




java pupiņas
// 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;> }>

>

>

Izvade

5 4>

Paskaidrojums:

  • Pirmkārt, funkcija tiek definēta ar atgriešanās datu tipu void un iegūst vērtību kā norādes (kā apzīmēta ar * zvaigznīte pierakstieties formālos parametros).
  • Funkcija samazina tās formālā parametra vērtību par 1.
  • Pēc tam galvenajā funkcijā vesela skaitļa mainīgais ar nosaukumu “a” tiek inicializēts ar vērtību 5.
  • Pēc tam tiek parādīta šī vērtība. Funkcija tiek izsaukta, un mainīgā adrese tiek nodota kā arguments.
  • Funkcijas iekšpusē rādītāja mainīgā vērtība tiek samazināta par 1.
  • Atgriežoties no funkcijas, atkal tiek parādīta mainīgā vērtība, kas izrādījās par 1 mazāka nekā sākotnējā vērtība.