logo

C++ funkcijos – nuoroda

Yra keletas būdų, kuriais duomenys (arba kintamieji) gali būti siunčiami kaip funkcijos argumentas. Du iš dažniausiai pasitaikančių yra „Passing by Value“ ir „Passing by Reference“. Perdavimas pagal nuorodą leidžia funkcijai modifikuoti kintamąjį nekuriant kopijos. Turime deklaruoti atskaitos kintamuosius. Perduoto kintamojo ir parametro atminties vieta yra ta pati. Todėl bet koks parametro pakeitimas taip pat atsispindi jo pagrindinės funkcijos kintamajame. Šiame straipsnyje pagrindinis dėmesys skiriamas aptarimui, kaip perduoti kintamuosius pagal nuorodą C++.

Kas yra leidimas pagal nuorodą?

Kai kintamasis perduodamas kaip nuoroda į funkciją, kintamojo adresas išsaugomas funkcijos viduje esančiame rodyklės kintamajame. Taigi funkcijos viduje esantis kintamasis yra perduodamo kintamojo slapyvardis. Todėl visos operacijos, atliekamos su kintamuoju funkcijos viduje, taip pat atsispindės iškvietimo funkcijoje.



struktūra duomenų struktūroje
  • Šis gebėjimas atspindėti pokyčius gali grąžinti daugiau nei vieną funkcijos reikšmę.
  • Be to, tuščioji funkcija gali techniškai grąžinti reikšmę (-es), naudojant šį metodą.

The & Operatorius (adresas) žymi reikšmes, perduodamas funkcijoje perduodant nuorodą. Žemiau yra C++ programa, skirta įgyvendinti nuorodas:

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

>

>

Išvestis

pasirinkti iš kelių sql lentelių
5 4>

Paaiškinimas:

  • Pirmiausia funkcija apibrėžiama su grąžinimo duomenų tipu void ir įgauna reikšmę pagal nuorodą (kaip žymima & adreso ženklą formaliuose parametruose).
  • Funkcija sumažina savo formalaus parametro reikšmę 1.
  • Po to pagrindinės funkcijos viduje yra sveikasis kintamasis, pavadintas a inicijuojamas reikšme 5.
  • „a“ reikšmė atspausdinta konsolėje. F() funkcija iškviečiama, o kintamasis perduodamas kaip argumentas.
  • Funkcijos viduje kintamojo reikšmė sumažinama 1.
  • Grįžus iš funkcijos, vėl rodoma kintamojo reikšmė, kuri pasirodė esanti 1 mažesnė už pradinę reikšmę.

Taigi, kintamojo pakeitimai, perduodami atsižvelgiant į funkciją, atsispindi iškvietimo funkcijoje.

Sukeisti funkciją naudojant „Pass-By-Reference“.

Apsikeitimo funkcija sukeičia dviejų kintamųjų, kuriuos ji gauna kaip argumentus, reikšmes. Žemiau yra C++ programa, skirta sukeisti dviejų kintamųjų reikšmes naudojant nuorodas.

C++




dvejetainio medžio postorder traversal
// 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;> }>

>

ekspertų sistemos

>

Išvestis:

C++ – apsikeitimo funkcija naudojant „Pass-By-Reference“.

Paaiškinimas:

  • Pirmiausia apibrėžiamas funkcijos prototipas (neprivaloma, jei funkcija apibrėžta prieš pagrindinę funkciją).
  • Pagrindinės funkcijos viduje dviejų kintamųjų reikšmės paimamos kaip vartotojo įvestis.
  • Reikšmės prieš iškviečiant apsikeitimo funkciją atspausdinamos konsolėje.
  • Po to reikšmės perduodamos kaip argumentas apsikeitimo funkcijai.
  • Apsikeitimo funkcija naudoja iškvietimą pagal nuorodą ir apima kodą, skirtą dviem kintamiesiems pakeisti.
  • Užbaigus funkciją, pagrindinėje funkcijoje rodoma dviejų kintamųjų reikšmė (po kvietimo apsikeisti).
  • Sukeistos reikšmės rodomos ekrane.

Praeiti pro nuorodą su rodyklėmis

Taip pat galima perduoti kintamąjį adresą iš iškviečiamosios funkcijos ir naudoti juos kaip rodyklę iškviestoje funkcijoje. Tai leidžia šiek tiek aiškiau keisti funkcijos kintamųjų reikšmes.

Žemiau yra C++ programa, skirta įgyvendinti nuorodas su rodyklėmis:

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

spausdinti iš java
>

>

Išvestis

5 4>

Paaiškinimas:

  • Pirmiausia funkcija apibrėžiama su grąžinimo duomenų tipu void ir įgauna reikšmę kaip rodyklės (kaip žymima * žvaigždute pasirašyti formalius parametrus).
  • Funkcija sumažina savo formalaus parametro reikšmę 1.
  • Po to pagrindinės funkcijos viduje sveikasis kintamasis, pavadintas „a“, inicijuojamas reikšme 5.
  • Tada rodoma ši vertė. Funkcija iškviečiama, o kintamojo adresas perduodamas kaip argumentas.
  • Funkcijos viduje rodyklės kintamojo reikšmė sumažinama 1.
  • Grįžus iš funkcijos, vėl rodoma kintamojo reikšmė, kuri pasirodė esanti 1 mažesnė už pradinę reikšmę.