Der findes flere måder, hvorpå data (eller variabler) kan sendes som et argument til en funktion. To af de almindelige er Passing by Value og Passing by Reference. Ved at passere ved reference tillader en funktion at ændre en variabel uden at oprette en kopi. Vi skal deklarere referencevariabler. Hukommelsesplaceringen for den overførte variabel og parameter er den samme. Derfor afspejles enhver ændring af parameteren også i variablen inde i dens overordnede funktion. Denne artikel fokuserer på at diskutere, hvordan man videregiver variabler ved reference i C++.
Hvad er en Pass by Reference?
Når en variabel sendes som reference til en funktion, gemmes variablens adresse i en pointervariabel inde i funktionen. Derfor er variablen inde i funktionen et alias for den beståede variabel. Derfor vil enhver handling, der udføres på variablen inde i funktionen, også blive afspejlet i den kaldende funktion.
- Denne evne til at afspejle ændringer kan returnere mere end én værdi af en funktion.
- En void-funktion kan også teknisk returnere værdi/værdier ved hjælp af denne metode.
Det & (adresse på) operatør angiver værdier, der sendes ved pass-by-reference i en funktion. Nedenfor er C++-programmet til at implementere pass-by-reference:
C++
.tif-fil
// 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;> }> |
>
>Produktion
5 4>
Forklaring:
- For det første defineres en funktion med returneringsdatatypen void og tager værdi ved reference (som angivet med & adressetegn i de formelle parametre).
- Funktionen formindsker værdien af dens formelle parameter med 1.
- Hvorefter inde i hovedfunktionen en heltalsvariabel navngivet -en initialiseres med værdien 5.
- Værdien af 'a' er trykt på konsollen. Funktionen f() kaldes, og variablen sendes som et argument.
- Inde i funktionen er variablens værdi formindsket med 1.
- Når du vender tilbage fra funktionen, vises variablens værdi igen, som viste sig at være 1 mindre end den oprindelige værdi.
Derfor afspejles ændringerne til en variabel, der er sendt med reference til en funktion, i den kaldende funktion.
Skift funktion ved hjælp af Pass-By-Reference
Swap-funktionen bytter værdierne af de to variable, den modtager som argumenter. Nedenfor er C++-programmet til at bytte værdier af to variable ved hjælp af pass-by-reference.
C++
hvordan man åbner en fil med java
// 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;> }> |
10 ml i oz
>
>
Produktion:

Forklaring:
- Først defineres funktionsprototypen (valgfrit, hvis funktionen er defineret før hovedfunktionen).
- Inde i hovedfunktionen tages værdierne af de to variable som input fra brugeren.
- Værdierne før kald af swap-funktionen er trykt på konsollen.
- Herefter sendes værdierne som et argument til swap-funktionen.
- Swap-funktionen bruger call-by-reference og indeholder koden til at bytte de to variable.
- Når funktionen er fuldført, vises værdien af de to variable i hovedfunktionen (efter kaldet til at bytte).
- De ombyttede værdier vises på skærmen.
Gå forbi reference med pointere
Det er også muligt at videregive den variable adresse fra den kaldende funktion og bruge dem som en pointer inde i den kaldte funktion. Dette tillader en lidt mere eksplicit ændring af variabelværdier i funktionen.
Nedenfor er C++-programmet til at implementere pass-by-reference med pointere:
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;> }> |
læse fra csv java
>
>Produktion
5 4>
Forklaring:
- For det første defineres en funktion med returneringsdatatypen void og tager værdi som pointere (som angivet med * stjerne logge ind på de formelle parametre).
- Funktionen formindsker værdien af dens formelle parameter med 1.
- Hvorefter inde i hovedfunktionen initialiseres en heltalsvariabel ved navn 'a' med værdien 5.
- Derefter vises denne værdi. Funktionen kaldes, og variablens adresse sendes som et argument.
- Inde i funktionen er pointervariablens værdi formindsket med 1.
- Når du vender tilbage fra funktionen, vises variablens værdi igen, som viste sig at være 1 mindre end den oprindelige værdi.