Vrati referencu u C++

Vrati Referencu U C



C++ pruža mogućnost vraćanja vrijednosti ili adrese putem njezine reference umjesto pokazivača. Korištenje referenci umjesto pokazivača može učiniti C++ program jednostavnijim za čitanje i upravljanje. U C++, reference i pokazivači su blisko povezani jedni s drugima. Primarna razlika je da iako su reference samo alternativno ime, 'alias' za drugu varijablu, pokazivači se mogu koristiti u operacijama kao što je dodavanje vrijednosti. Referenca je alternativni naziv ili duplikat izvorne vrijednosti i označava se simbolom '&'.

Primjer 1:

Uvozimo datoteku zaglavlja 'iostream', a zatim koristimo prostor imena 'std'. Datoteke zaglavlja se uvoze u C++ kodovima jer su definirane mnoge funkcije. Zatim stvaramo povratnu referentnu funkciju postavljanjem simbola '&' uz naziv funkcije, 'returnTheValue'.







Ovdje je sada umetnuta referenca 'vrijednost'. Ispod toga ispisujemo vrijednost i adresu s referencom '&vrijednost'. Zatim postavljamo povratnu referencu i postavljamo 'vrijednost'. Sada se ovdje poziva 'main()' i inicijaliziramo 'n1' s vrijednošću '44'. Ispod ovoga, 'int& n2' se inicijalizira s 'returnTheValue(n1)'. Sada ispisujemo vrijednost 'n1' kao i njegovu adresu. Zatim ispisujemo vrijednost 'n2' kao i adresu 'n2' koristeći 'cout'.



Kod 1:



#include
korištenje imenskog prostora std;
int i returnTheValue ( int i vrijednost )
{
cout << 'Vrijednost = ' << vrijednost << endl
<< ' Adresa vrijednosti je '
<< i vrijednost << endl;
povratak vrijednost;
}
int glavni ( )
{
ti n1 = 44 ;
int i n2 = returnTheValue ( n1 ) ;
cout << 'n1 = ' << n1 << endl
<< ' Adresa n1 je '
<< i n1 << endl;
cout << 'n2 = ' << n2 << endl
<< ' Adresa n2 je '
<< i n2 << endl;
povratak 0 ;
}


Izlaz:





Ovdje možemo primijetiti da je referenca samo alternativni naziv druge varijable kao što je prikazano u nastavku. Kao adresa vrijednosti, “n1” i “n2” se nikada ne mijenjaju.



Primjer 2:

Koristimo prostor naziva 'std' nakon uvoza datoteke zaglavlja 'iostream'. Zatim koristimo naziv funkcije 'MyReturnValueFunc' i simbol '&' za izradu povratne referentne funkcije. Ovdje se nalazi referenca na varijablu “v1”. Ispisujemo vrijednost i adresu s referencom '&v1' ispod ovoga. Zatim umećemo 'povratnu referencu' koristeći 'povratak' i 'v1' na ovom mjestu. Ovdje se poziva 'main()', a 'num_1' se inicijalizira s vrijednošću '19'. Inicijalizacija 'int& num_2' vrši se pomoću 'MyReturnValueFunc(num_1)'.

Trenutno ispisujemo vrijednost i adresu 'num_1' i, koristeći 'cout', ispisujemo vrijednost i adresu 'num_2'. Sada mijenjamo vrijednost 'num_1' korištenjem adrese koju ovdje vraća 'MyReturnValueFunc'. Ova funkcija vraća alternativni naziv 'v1' koji je također alternativni naziv 'num_1'. Dakle, mijenjamo njegovu vrijednost i postavljamo je na '91'. Dodjeljujemo “91” funkciji “MyReturnValueFunc(num_1)” koja ovdje djeluje kao alias. Zatim ponovno ispisujemo vrijednost i adresu 'num_1'.

Kod 2:

#include
korištenje imenskog prostora std;
int i MyReturnValueFunc ( int i v1 )
{
cout << 'Vrijednost v1 = ' << v1 << endl
<< ' Adresa varijable v1 je '
<< i v1 << endl;
povratak v1;
}
int glavni ( )
{
int num_1 = 19 ;
int i num_2 = MyReturnValueFunc ( broj_1 ) ;
cout << 'Vrijednost num_1 = ' << broj_1 << endl
<< ' Adresa num_1 je '
<< i broj_1 << endl;
cout << 'Vrijednost num_2 = ' << broj_2 << endl
<< ' Adresa num_2 je '
<< i broj_2 << endl;
MyReturnValueFunc ( broj_1 ) = 91 ;
cout << 'Sada, vrijednost num_1 = ' << broj_1 << endl
<< 'Adresa num_1 je '
<< i broj_1 << endl;
povratak 0 ;
}


Izlaz:

Kao što je prikazano u nastavku, možemo vidjeti da je referenca samo alternativno ime za drugu varijablu budući da je adresa vrijednosti 'v1', 'num_1' i 'num_2' ostala konstantna:

Primjer 3:

Datoteka zaglavlja 'iostream' se uvozi i koristi se prostor imena 'std'. Budući da su brojne funkcije navedene u datotekama zaglavlja, uvozimo ih u C++ kodove. Ovdje stvaramo funkciju “ReturnRefFun()” u koju postavljamo “int& my_ref” koja vraća referencu. “Int& ReturnRefFun” ovdje je deklarirana kao referentna funkcija. Nakon toga povećavamo vrijednost varijable 'my_ref'. Ispod toga smo stavili 'return' koji vraća referencu 'my_ref'.

Nakon toga, ovdje se poziva metoda “main()”. Zatim inicijaliziramo varijablu “first_value” s “21”. Ispod toga vraćamo kopiju reference postavljanjem “first_value” u funkciju “ReturnRefFun” i spremanjem je u varijablu “copied_value”. Zatim ispisujemo i 'first_value' kao i 'copied_value' koristeći 'cout'. Ispod toga, povećavamo varijablu 'copied_value' postavljanjem 'copied_value++'. Zatim ispisujemo 'copied_value' nakon što smo je povećali i 'first_value' pomoću 'cout'. Nakon toga, vraćamo referencu uz pomoć inicijalizacije varijable “int& ref_value” s “ReturnRefFun(first_value)”.

Nakon toga ispisujemo vrijednost varijable “my_ref” koju smo kopirali. Zatim ispisujemo vrijednost varijable “first_value”. Ispod toga, povećavamo vrijednost 'ref_value' stavljanjem 'ref_value++'. Ispod ovoga ispisujemo povećanu vrijednost 'ref_value' i također varijablu 'first_value' uz pomoć 'cout'. Kada se “ref_value” promijeni, “first_value” će se također promijeniti.

Kod 3:

#include
korištenje imenskog prostora std;
int i ReturnRefFun ( int i moj_ref ) {
moj_ref++;
povratak moj_ref;
}
int glavni ( ) {
int prva_vrijednost = dvadeset i jedan ;
int kopirana_vrijednost =ReturnRefFun ( prva_vrijednost ) ;
cout << 'Prva vrijednost je: ' << prva_vrijednost << endl;
cout << 'Kopirana vrijednost je: ' << kopirana_vrijednost << endl;
kopirana_vrijednost++;
cout << 'Copied_value se povećava: ' << kopirana_vrijednost << endl;
cout << 'Prva vrijednost: ' << prva_vrijednost << endl;
int i ref_vrijednost =ReturnRefFun ( prva_vrijednost ) ;
cout << 'Referentna kopirana vrijednost: ' << ref_vrijednost << endl;
cout << 'Prva vrijednost: ' << prva_vrijednost << endl;
ref_vrijednost++;
cout << 'Referentna vrijednost se povećava: ' << ref_vrijednost << endl;
cout << 'Prva vrijednost: ' << prva_vrijednost << endl;
povratak 0 ;
}


Izlaz:

Ovo je rezultat prethodnog koda gdje smo koristili tehniku ​​'povratne reference'. Primjer pokazuje razliku između vraćanja duplikata referentne varijable i vraćanja same referentne varijable.

Primjer 4:

Ovdje je “int& rByRef” deklarirana kao referentna funkcija koja vraća referentnu varijablu. Prosljeđujemo “int& podatke” ovoj funkciji “int& rByref()”. Ovdje ispisujemo adresu varijable 'data' i zatim koristimo povratnu referencu ispod ove. Sada inicijaliziramo varijablu “x_var” nakon pozivanja metode “main()”. Zatim ovdje ispisujemo adresu “x_var” stavljajući “&x_var” u “cout”.

Ispod toga koristimo referentnu varijablu dodjeljivanjem 'rByref(x_var)' 'int& y_var'. Zatim također ispisujemo adresu te '&y_var' referentne varijable. Ispod ovoga kopiramo varijablu “x_var” u varijablu “z_var” i također ispisujemo adresu ove kopirane varijable koja je “&z_var”. Nakon toga pozivamo funkciju “rByref()”, prosljeđujemo varijablu “x_var” kao parametar unutar nje i dodjeljujemo “93” ovoj varijabli. Također ponovno prikazujemo adresu “x_var” stavljanjem “&x_var” u “cout”.

Kod 4:

#include
korištenje imenskog prostora std;
int i rByref ( int i podaci )
{
cout << 'Adresa podataka: ' << i podaci << endl;
povratak podaci;
}
int glavni ( )
{
int x_var = 42 ;
cout << 'Adresa x_var: ' << i x_var << endl;
int i y_var = rByref ( x_var ) ;
cout << 'Adresa y_var: ' << i y_var << endl;
int z_var = rByref ( x_var ) ;
cout << 'Adresa z_var: ' << i z_var << endl;
rByref ( x_var ) = 93 ;
cout << 'Adresa x_var: ' << i x_var << endl;
povratak 0 ;
}


Izlaz:

Rezultat jasno pokazuje da se adresa klonirane varijable, 'z_var', razlikuje od svih ostalih lokacija na koje upućuje izvorna varijabla, 'x_var'.

Zaključak

Koncept 'povratne reference' detaljno je istražen u ovom vodiču. Naučili smo da je 'povratna referenca' slična 'pokazivačima' u C++ programiranju. Raspravljali smo o tome da se za označavanje koja funkcija vraća referencu potrebno koristiti simbol '&' s vrstom povrata funkcije. Ilustrirali smo neke primjere i njihove ishode i razumjeli ovaj koncept u ovom vodiču.