Referencia visszaadása C++ nyelven

Referencia Visszaadasa C Nyelven



A C++ lehetőséget biztosít arra, hogy egy értéket vagy egy címet a hivatkozással adja vissza mutató helyett. A hivatkozások használata mutatók helyett egyszerűbbé teheti a C++ programok olvasását és kezelését. A C++ nyelvben a hivatkozások és a mutatók szorosan kapcsolódnak egymáshoz. Az elsődleges különbség az, hogy bár a hivatkozások csak egy alternatív név, egy másik változó „álneve”, a mutatók használhatók olyan műveleteknél, mint például értékek hozzáadása. A hivatkozás az eredeti érték alternatív neve vagy másodpéldánya, és az „&” szimbólum jelöli.

1. példa:

Importáljuk az „iostream” fejlécfájlt, majd használjuk az „std” névteret. A fejlécfájlok importálása C++ kódokban történik, mivel számos függvény van meghatározva. Ezután létrehozunk egy visszatérési referenciafüggvényt úgy, hogy az „&” szimbólumot elhelyezzük a függvény nevével, „returnTheValue”.







Itt most az „érték” hivatkozás kerül beillesztésre. Ez alá nyomtatjuk az értéket és a címet az „&érték” hivatkozással. Ezután helyezzük el a visszatérési hivatkozást, és helyezzük el az „értéket”. Most itt a „main()” meghívásra kerül, és az „n1”-et inicializáljuk „44” értékkel. Ez alatt az „int& n2” a „returnTheValue(n1)” értékkel inicializálódik. Most kiírjuk az „n1” értékét, valamint a címét. Ezután kiírjuk az „n2” értékét, valamint az „n2” címét a „cout” használatával.



1. kód:



#include
névtér használata std;
int & returnTheValue ( int & érték )
{
cout << 'Érték =' << érték << endl
<< 'Az érték címe'
<< & érték << endl;
Visszatérés érték;
}
int fő ( )
{
te n1 = 44 ;
int & n2 = returnTheValue ( n1 ) ;
cout << 'n1 = ' << n1 << endl
<< 'N1 címe'
<< & n1 << endl;
cout << 'n2 = ' << n2 << endl
<< 'N2 címe'
<< & n2 << endl;
Visszatérés 0 ;
}


Kimenet:





Itt megjegyezhetjük, hogy a hivatkozás csak egy másik változó alternatív neve, amint az az alábbiakban látható. Az érték címeként az „n1” és az „n2” soha nem változik.



2. példa:

Az „iostream” fejlécfájl importálása után az „std” névteret használjuk. Ezután a „MyReturnValueFunc” függvény nevét és az „&” szimbólumot használjuk a visszatérési referenciafüggvény létrehozásához. Itt található a „v1” változóra való hivatkozás. Kiírjuk az értéket és a címet, alatta a „&v1” hivatkozással. Ezután beillesztjük a „visszatérés hivatkozását” a „return” és a „v1” használatával ezen a helyen. Itt a „main()” meghívásra kerül, a „num_1” pedig „19” értékkel inicializálódik. Az „int& szám_2” inicializálása a „MyReturnValueFunc(num_1)” paraméterrel történik.

Jelenleg a „szám_1” értékét és címét nyomtatjuk, a „cout” használatával pedig a „szám_2” értékét és címét. Most megváltoztatjuk a „szám_1” értékét a „MyReturnValueFunc” által itt visszaadott cím felhasználásával. Ez a függvény a „v1” alternatív nevét adja vissza, amely egyben a „szám_1” alternatív neve is. Tehát megváltoztatjuk az értékét, és „91”-re állítjuk. A „91”-et hozzárendeljük a „MyReturnValueFunc(num_1)”-hez, amely itt álnévként működik. Ezután újra kiírjuk az értéket és a „szám_1” címét.

2. kód:

#include
névtér használata std;
int & MyReturnValueFunc ( int & v1 )
{
cout << 'A v1 értéke = ' << v1 << endl
<< 'A v1 változó címe'
<< & v1 << endl;
Visszatérés v1;
}
int fő ( )
{
int szám_1 = 19 ;
int & num_2 = MyReturnValueFunc ( szám_1 ) ;
cout << 'A szám_1 értéke = ' << szám_1 << endl
<< ' A szám_1 címe '
<< & szám_1 << endl;
cout << 'A szám_2 értéke = ' << szám_2 << endl
<< ' A szám_2 címe '
<< & szám_2 << endl;
MyReturnValueFunc ( szám_1 ) = 91 ;
cout << 'Most a szám_1 értéke = ' << szám_1 << endl
<< 'A szám_1 címe'
<< & szám_1 << endl;
Visszatérés 0 ;
}


Kimenet:

Ahogy az alábbiakban bemutatjuk, láthatjuk, hogy a hivatkozás csupán egy másik változó alternatív neve, mivel a „v1”, „num_1” és „num_2” értékek címe állandó maradt:

3. példa:

A rendszer importálja az „iostream” fejlécfájlt, és az „std” névteret használja. Mivel a fejlécfájlokban számos függvény van megadva, ezeket a C++ kódokba importáljuk. Itt létrehozunk egy „ReturnRefFun()” függvényt, amelyben elhelyezzük az „int& my_ref”-et, amely visszaadja a hivatkozást. Az „int& ReturnRefFun” itt referenciafüggvényként van deklarálva. Ezt követően növeljük a „my_ref” változó értékét. Ez alá helyezzük a „return” szót, amely a „my_ref” hivatkozást adja vissza.

Ezt követően itt a „main()” metódus kerül meghívásra. Ezután inicializáljuk a „first_value” változót „21”-el. Ez alatt visszaadjuk a hivatkozás másolatát úgy, hogy a „ReturnRefFun” függvényben elhelyezzük a „first_value” értéket, és elmentjük a „copied_value” változóba. Ezután kinyomtatjuk a „first_value” és a „copied_value” értéket is a „cout” használatával. Ez alatt megnöveljük a „copied_value” változót a „copied_value++” elhelyezésével. Ezután kinyomtatjuk a „copied_value”-t, miután növeltük, és a „first_value”-t a „cout” használatával. Ezt követően visszaadjuk a hivatkozást az „int& ref_value” változó „ReturnRefFun(first_value)” paraméterrel történő inicializálásával.

Ezt követően kiírjuk az általunk másolt „my_ref” változó értékét. Ezután kiírjuk a „first_value” változó értékét. Ez alá növeljük a „ref_value” értékét a „ref_value++” beírásával. Ez alatt kiírjuk a „ref_value” növekményes értékét, valamint a „cout” segítségével a „first_value” változót. Amikor a „ref_value” megváltozik, az „első_érték” is megváltozik.

3. kód:

#include
névtér használata std;
int & ReturnRefFun ( int & my_ref ) {
my_ref++;
Visszatérés my_ref;
}
int fő ( ) {
int első_érték = huszonegy ;
int másolt_érték =ReturnRefFun ( első_érték ) ;
cout << 'Az első érték: ' << első_érték << endl;
cout << 'A másolt érték: ' << másolt_érték << endl;
másolt_érték++;
cout << 'A másolt_érték növekszik: ' << másolt_érték << endl;
cout << 'Az első érték:' << első_érték << endl;
int & ref_value =ReturnRefFun ( első_érték ) ;
cout << 'A referencia másolt értéke: ' << ref_value << endl;
cout << 'Az első érték:' << első_érték << endl;
ref_value++;
cout << 'A referenciaérték növekszik:' << ref_value << endl;
cout << 'Az első érték:' << első_érték << endl;
Visszatérés 0 ;
}


Kimenet:

Íme az előző kód eredménye, ahol a „return reference” technikát alkalmaztuk. A példa bemutatja a különbséget a referenciaváltozó másolatának visszaadása és magának a referenciaváltozónak a visszaadása között.

4. példa:

Itt az „int& rByRef” referenciafüggvényként van deklarálva, amely a referenciaváltozót adja vissza. Az „int& data”-t átadjuk ennek az „int& rByref()” függvénynek. Itt kiírjuk a „data” változó címét, majd az alatta lévő visszatérési hivatkozást használjuk. Most inicializáljuk az „x_var” változót a „main()” metódus meghívása után. Ezután itt nyomtatjuk ki az „x_var” címét úgy, hogy az „&x_var”-t a „cout”-ba helyezzük.

Ez alatt a referenciaváltozót használjuk úgy, hogy az „rByref(x_var)”-t hozzárendeljük az „int& y_var”-hoz. Ezután kinyomtatjuk az „&y_var” referenciaváltozó címét is. Ez alatt bemásoljuk az „x_var” változót a „z_var” változóba, és kiírjuk ennek a másolt változónak a címét is, ami „&z_var”. Ezután meghívjuk az „rByref()” függvényt, benne az „x_var” változót paraméterként adjuk át, és ehhez a változóhoz „93”-at rendelünk. Az „x_var” címét is visszaadjuk úgy, hogy az „&x_var”-t a „cout”-ba helyezzük.

4. kód:

#include
névtér használata std;
int & rByref ( int & adat )
{
cout << 'Az adatok címe:' << & adat << endl;
Visszatérés adat;
}
int fő ( )
{
int x_var = 42 ;
cout << 'X_var címe: ' << & x_var << endl;
int & y_var = rByref ( x_var ) ;
cout << 'Y_var címe: ' << & y_var << endl;
int z_var = rByref ( x_var ) ;
cout << 'Z_var címe: ' << & z_var << endl;
rByref ( x_var ) = 93 ;
cout << 'X_var címe: ' << & x_var << endl;
Visszatérés 0 ;
}


Kimenet:

Az eredmény egyértelművé teszi, hogy a klónozott változó címe, a „z_var”, eltér az összes többi helytől, amelyre az eredeti „x_var” változó hivatkozik.

Következtetés

A „visszatérési hivatkozás” fogalmát ez az oktatóanyag részletesen feltárja. Megtudtuk, hogy a „visszatérési hivatkozás” hasonló a C++ programozás „mutatóihoz”. Megbeszéltük, hogy annak jelzéséhez, hogy melyik függvény ad vissza hivatkozást, az „&” szimbólumot kell használni a függvény visszatérési típusával. Néhány példát és azok eredményeit illusztráltuk, és megértettük ezt a koncepciót ebben az oktatóanyagban.