Er bestaan verschillende manieren waarop gegevens (of variabelen) als argument naar een functie kunnen worden verzonden. Twee van de meest voorkomende zijn Passing by Value en Passing by Reference. Door referentie door te geven, kan een functie een variabele wijzigen zonder een kopie te maken. We moeten referentievariabelen declareren. De geheugenlocatie van de doorgegeven variabele en parameter is hetzelfde. Daarom wordt elke wijziging aan de parameter ook weerspiegeld in de variabele binnen de bovenliggende functie. Dit artikel richt zich op het bespreken van het doorgeven van variabelen door middel van verwijzing in C++.
Wat is een referentiepas?
Wanneer een variabele wordt doorgegeven als verwijzing naar een functie, wordt het adres van de variabele opgeslagen in een pointervariabele binnen de functie. Daarom is de variabele binnen de functie een alias voor de doorgegeven variabele. Daarom worden alle bewerkingen die op de variabele binnen de functie worden uitgevoerd, ook weerspiegeld in de aanroepende functie.
- Dit vermogen om veranderingen weer te geven kan meer dan één waarde per functie retourneren.
- Ook zou een void-functie technisch gezien waarde(n) kunnen retourneren met behulp van deze methode.
De & (adres van) operator geeft waarden aan die worden doorgegeven via pass-by-referentie in een functie. Hieronder vindt u het C++-programma om pass-by-reference te implementeren:
C++
functies in c
// 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;> }> |
>
is een relatie
>Uitvoer
5 4>
Uitleg:
- Eerst wordt een functie gedefinieerd met het return-datatype void en wordt waarde overgenomen door referentie (zoals aangegeven door de & adresteken in de formele parameters).
- De functie verlaagt de waarde van zijn formele parameter met 1.
- Waarna, binnen de hoofdfunctie, een integer-variabele wordt genoemd A wordt geïnitialiseerd met de waarde 5.
- De waarde van ‘a’ staat op de console gedrukt. De functie f() wordt aangeroepen en de variabele wordt als argument doorgegeven.
- Binnen de functie wordt de waarde van de variabele met 1 verlaagd.
- Bij terugkeer uit de functie wordt de waarde van de variabele opnieuw weergegeven, die 1 minder bleek te zijn dan de oorspronkelijke waarde.
Daarom worden de wijzigingen in een variabele die wordt doorgegeven door verwijzing naar een functie weerspiegeld in de aanroepende functie.
Wisselfunctie met behulp van Pass-By-Reference
De swap-functie verwisselt de waarden van de twee variabelen die het als argumenten ontvangt. Hieronder staat het C++-programma om de waarden van twee variabelen om te wisselen met behulp van pass-by-referentie.
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++ tekenreeks gesplitst
>
>
Uitgang:

Uitleg:
- Eerst wordt het functieprototype gedefinieerd (optioneel als de functie vóór de hoofdfunctie wordt gedefinieerd).
- Binnen de hoofdfunctie worden de waarden van de twee variabelen als invoer van de gebruiker gebruikt.
- De waarden vóór het aanroepen van de swap-functie worden op de console afgedrukt.
- Hierna worden de waarden als argument doorgegeven aan de swap-functie.
- De swap-functie maakt gebruik van call-by-reference en bevat de code voor het verwisselen van de twee variabelen.
- Na voltooiing van de functie wordt de waarde van de twee variabelen weergegeven in de hoofdfunctie (na de oproep tot swap).
- De verwisselde waarden worden op het scherm weergegeven.
Passeer referentie met aanwijzingen
Het is ook mogelijk om het variabele adres van de aanroepende functie door te geven en deze als aanwijzer binnen de aangeroepen functie te gebruiken. Dit maakt het iets explicieter mogelijk om de waarden van variabelen in de functie te wijzigen.
Hieronder vindt u het C++-programma om pass-by-reference met pointers te implementeren:
C++
voeg een watermerk in het woord in
// 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;> }> |
>
>Uitvoer
5 4>
Uitleg:
- Eerst wordt een functie gedefinieerd met het retourdatatype void en neemt waarde aan als pointers (zoals aangegeven door de * asterisk teken de formele parameters in).
- De functie verlaagt de waarde van zijn formele parameter met 1.
- Hierna wordt binnen de hoofdfunctie een geheel getalvariabele met de naam ‘a’ geïnitialiseerd met de waarde 5.
- Vervolgens wordt deze waarde weergegeven. De functie wordt aangeroepen en het adres van de variabele wordt als argument doorgegeven.
- Binnen de functie wordt de waarde van de pointervariabele met 1 verlaagd.
- Bij terugkeer uit de functie wordt de waarde van de variabele opnieuw weergegeven, die 1 minder bleek te zijn dan de oorspronkelijke waarde.