logo

C++-funktioner – Pass By Reference

Det finns flera sätt på vilka data (eller variabler) kan skickas som ett argument till en funktion. Två av de vanliga är Passing by Value och Passing by Reference. Genom att skicka genom referens kan en funktion ändra en variabel utan att skapa en kopia. Vi måste deklarera referensvariabler. Minnesplatsen för den överförda variabeln och parametern är densamma. Därför återspeglas varje ändring av parametern också i variabeln i dess överordnade funktion. Den här artikeln fokuserar på att diskutera hur man skickar variabler genom referens i C++.

Vad är en passerad referens?

När en variabel skickas som en referens till en funktion lagras variabelns adress i en pekvariabel inuti funktionen. Därför är variabeln inuti funktionen ett alias för den överförda variabeln. Därför kommer alla operationer som utförs på variabeln inuti funktionen också att återspeglas i den anropande funktionen.



  • Denna förmåga att reflektera ändringar kan returnera mer än ett värde av en funktion.
  • Dessutom kan en void-funktion tekniskt returnera värde/värden med denna metod.

De & (adress till) operatör anger värden som skickas med pass-by-referens i en funktion. Nedan är C++-programmet för att implementera pass-by-referens:

C++

lambda funktion java








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

>

hur man bryter sig ur en while loop java
>

Produktion

5 4>

Förklaring:

  • Först definieras en funktion med returdatatypen void och tar in värde genom referens (som betecknas med & adresstecken i de formella parametrarna).
  • Funktionen minskar värdet på dess formella parameter med 1.
  • Därefter, inuti huvudfunktionen, en heltalsvariabel med namnet a initieras med värdet 5.
  • Värdet på 'a' är tryckt på konsolen. Funktionen f() anropas och variabeln skickas som ett argument.
  • Inuti funktionen minskas variabelns värde med 1.
  • När du återvänder från funktionen visas variabelns värde igen, vilket visade sig vara 1 mindre än det ursprungliga värdet.

Följaktligen återspeglas ändringarna av en variabel som skickas med hänvisning till en funktion i den anropande funktionen.

Byt funktion med hjälp av Pass-By-Reference

Bytningsfunktionen byter ut värdena för de två variablerna som den tar emot som argument. Nedan är C++-programmet för att byta värden för två variabler med hjälp av pass-by-referens.

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

c programmeringsexempelprogram
>

>

Produktion:

C++ - Byt funktion med hjälp av Pass-By-Reference

Förklaring:

  • Först definieras funktionsprototypen (valfritt om funktionen definieras före huvudfunktionen).
  • Inuti huvudfunktionen tas värdena för de två variablerna som indata från användaren.
  • Värdena innan växlingsfunktionen anropas skrivs ut på konsolen.
  • Därefter skickas värdena som ett argument till swapfunktionen.
  • Bytsfunktionen använder call-by-reference och innehåller koden för att byta de två variablerna.
  • När funktionen är klar visas värdet på de två variablerna i huvudfunktionen (efter anropet att byta).
  • De utbytta värdena visas på skärmen.

Gå förbi referens med pekare

Det är också möjligt att skicka variabeladressen från den anropande funktionen och använda dem som en pekare i den anropade funktionen. Detta tillåter lite mer explicit förändring av variabelvärden i funktionen.

Nedan är C++-programmet för att implementera pass-by-referens med pekare:

C++


om annat om java



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

>

>

Produktion

5 4>

Förklaring:

  • Först definieras en funktion med returdatatypen void och tar in värde som pekare (som betecknas med * asterisk logga in de formella parametrarna).
  • Funktionen minskar värdet på dess formella parameter med 1.
  • Varefter, inuti huvudfunktionen, en heltalsvariabel med namnet 'a' initieras med värdet 5.
  • Då visas detta värde. Funktionen anropas och variabelns adress skickas som ett argument.
  • Inuti funktionen minskas pekarvariabelns värde med 1.
  • När du återvänder från funktionen visas variabelns värde igen, vilket visade sig vara 1 mindre än det ursprungliga värdet.