On olemassa useita tapoja, joilla dataa (tai muuttujia) voidaan lähettää argumenttina funktiolle. Kaksi yleisimmistä ovat Passing by Value ja Passing by Reference. Viittauksen ohittaminen sallii funktion muokata muuttujaa luomatta kopiota. Meidän on ilmoitettava viitemuuttujat. Siirretyn muuttujan ja parametrin muistipaikka on sama. Siksi mikä tahansa parametrin muutos heijastuu myös sen emofunktion sisällä olevaan muuttujaan. Tämä artikkeli keskittyy keskustelemaan muuttujien välittämisestä viittauksella C++:ssa.
Mikä on Pass by Reference?
Kun muuttuja välitetään viittauksena funktioon, muuttujan osoite tallennetaan funktion sisällä olevaan osoitinmuuttujaan. Näin ollen funktion sisällä oleva muuttuja on hyväksytyn muuttujan alias. Siksi kaikki funktion sisällä olevalle muuttujalle tehdyt toiminnot näkyvät myös kutsuvassa funktiossa.
- Tämä kyky heijastaa muutoksia voi palauttaa useamman kuin yhden arvon funktiolla.
- Myös void-funktio voisi teknisesti palauttaa arvon/arvot tällä menetelmällä.
The & (osoite) -operaattori tarkoittaa arvoja, jotka välitetään funktiossa ohitusviittauksella. Alla on C++-ohjelma ohitusviittauksen toteuttamiseksi:
C++
lajitella taulukko javassa
// 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;> }> |
>
>Lähtö
git push -komento
5 4>
Selitys:
- Ensinnäkin funktio määritellään palautustietotyypillä void ja ottaa arvon viitteellä (kuten on merkitty & osoitemerkki muodollisissa parametreissa).
- Funktio pienentää muodollisen parametrinsa arvoa yhdellä.
- Tämän jälkeen pääfunktion sisällä kokonaislukumuuttuja nimeltä a alustetaan arvolla 5.
- A:n arvo on painettu konsoliin. F()-funktiota kutsutaan ja muuttuja välitetään argumenttina.
- Funktion sisällä muuttujan arvoa pienennetään 1:llä.
- Palattuaan funktiosta muuttujan arvo näytetään uudelleen, joka osoittautui 1 pienempi kuin alkuperäinen arvo.
Siten muutokset muuttujaan, joka välitetään funktion perusteella, näkyvät kutsuvassa funktiossa.
Vaihda toiminto käyttämällä ohitusviittausta
Swap-funktio vaihtaa argumentteina vastaanottamansa kahden muuttujan arvot. Alla on C++-ohjelma kahden muuttujan arvojen vaihtamiseksi ohimenevällä viittauksella.
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;> }> |
java värit
>
>
Lähtö:
Selitys:
- Ensin määritellään funktion prototyyppi (valinnainen, jos toiminto on määritetty ennen päätoimintoa).
- Pääfunktion sisällä kahden muuttujan arvot otetaan syötteenä käyttäjältä.
- Arvot ennen swap-toiminnon kutsumista tulostetaan konsoliin.
- Tämän jälkeen arvot välitetään argumenttina swap-funktiolle.
- Swap-toiminto käyttää call-by-referencea ja sisältää koodin näiden kahden muuttujan vaihtamiseksi.
- Kun toiminto on suoritettu, kahden muuttujan arvo näkyy pääfunktiossa (vaihtokutsun jälkeen).
- Vaihdetut arvot näkyvät näytöllä.
Ohita viite osoittimilla
On myös mahdollista välittää muuttujaosoite kutsuvasta funktiosta ja käyttää niitä osoittimena kutsutun funktion sisällä. Tämä mahdollistaa funktion muuttujien arvojen muuttamisen hieman selvemmin.
Alla on C++-ohjelma, jolla voidaan toteuttaa ohitusviittaus osoittimilla:
java boolen merkkijono
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ähtö
5 4>
Selitys:
- Ensinnäkin funktio määritellään palautustietotyypillä void ja ottaa arvon osoittimina (merkitty * tähti kirjaudu sisään muodolliset parametrit).
- Funktio pienentää muodollisen parametrinsa arvoa yhdellä.
- Tämän jälkeen pääfunktion sisällä kokonaislukumuuttuja nimeltä 'a' alustetaan arvolla 5.
- Sitten tämä arvo näytetään. Funktiota kutsutaan ja muuttujan osoite välitetään argumenttina.
- Toiminnon sisällä osoitinmuuttujan arvoa pienennetään yhdellä.
- Palattuaan funktiosta muuttujan arvo näytetään uudelleen, joka osoittautui 1 pienempi kuin alkuperäinen arvo.