references c
Upoznajte načine deklariranja i korištenja referenci na C ++.
Referenca je glavni koncept u programskom jeziku C ++. Iako nije tako jak kao pokazivači, ipak nam omogućuje da ga koristimo za pisanje učinkovitih programa. Glavna upotreba referentne varijable je u prosljeđivanju parametara funkcijama.
Popularna tehnika prosljeđivanja parametara 'proslijedi referencu' koristi reference. U ovom uputstvu vidjet ćemo što je referenca i kako je prijaviti i koristiti. Također ćemo razgovarati o razlikama između pokazivača i referenci, kao i o prosljeđivanju i vraćanju reference na / iz funkcija.
=> Pogledajte ovdje kako biste istražili cjeloviti popis vodiča za C ++.
Što ćete naučiti:
- Što je referenca?
- Izjava o referentnim varijablama
- Referenca Vs Pointers
- Prosljeđivanje referenci na funkcije
- Vraćanje referenci
- Zaključak
- Preporučena literatura
Što je referenca?
Referenca je alias ili drugo ime za varijablu. S obzirom na varijablu s identifikatorom, toj varijabli možemo pružiti drugi identifikator tako da se na nju možemo pozvati ili s izvornim imenom ili s drugim imenom. Ovo 'drugo ime' je ono što se naziva referencom.
Uzmimo u obzir da imamo varijablu 'i' s vrijednošću 17. Ako je j referenca, tada je dolje prikazan prikaz memorije varijable i i reference j.
Kao što je prikazano na gornjoj slici, varijabla i to je zamjensko ime, tj. Referentna točka na istu vrijednost.
Izjava o referentnim varijablama
Referenca se može objaviti pomoću operatora '&'.
Izjava o referenci prikazana je u nastavku.
int a = 10; int& refvar = a;
Dakle, u gornjem kodu deklarirali smo cjelobrojnu varijablu s vrijednošću 10. Zatim smo deklarirali drugu varijablu refvar i dodijelili joj varijablu. Imajte na umu da smo dok smo deklarirali refvar koristili & operator neposredno prije imena varijable. To znači da je refvar referenca na već postojeću varijablu.
Na varijablu 'a' možemo se pozivati bilo pomoću naziva varijable a ili pomoću referencnog imena 'refvar'.
kako postaviti selensku mrežu
Slijedi jednostavni primjer reference:
#include #include using namespace std; int main() { int age = 22; int& numYears = age; double salary = 10000.00; double& wages = salary; cout<<'Age: '< Izlaz:
Dob: 22
BrojGodina: 22
Plaća: 10000
Plaće: 10000
U gornjem kodu imamo cijelu varijablu dob. Dalje, deklariramo referentnu cjelobrojnu varijablu numYears za dobnu varijablu. Imamo još jednu varijabilnu plaću tipa double. Dalje, deklariramo dvostruku referencu varijable plaće za varijablu plaće.
Dalje, ispisujemo varijable, prvo dob, a zatim referencu slijedi plaća i referenca. Ako provjerimo rezultate programa, shvatit ćemo da varijabla i upućivanje na nju upućuju na istu vrijednost, pa stoga dob i broj godina, kao i plaća i plaće, imaju iste vrijednosti.
Referenca Vs Pointers
U usporedbi s pokazivačima, reference su sigurnije i jednostavnije za upotrebu.
Razgovarat ćemo o nekoliko razlika između pokazivača i referenci:
- Za razliku od pokazivača, reference ne mogu imati null vrijednost. Obvezna je referenca kojoj se dodjeljuje vrijednost.
- Reference se inicijaliziraju u trenutku kada su stvorene. Za razliku od ovoga, pokazivači se mogu inicijalizirati u bilo kojem trenutku, a ne nužno tijekom deklaracije.
- Pokazivači se mogu lako dodijeliti vrijednostima. Ali s referencama to ne možemo učiniti. Jednom kada je dodijeljena vrijednost varijable, tj. Kada je izrađen alias varijable, ovoj referenci ne možemo dodijeliti drugu varijablu.
- Nemamo ništetnih referenci. Po definiciji, referenca je zamjensko ime za varijablu i inicijalizira se tijekom samog stvaranja. Dakle, nema šanse da ćemo imati prazninu i kasnije joj dodijeliti varijablu s konkretnim tipom podataka. Suprotno tome, možemo imati šuplje pokazivače.
Zbog ovih gore navedenih ograničenja, reference u C ++-u ne mogu se koristiti s podatkovnim strukturama poput povezanog popisa. Imajte na umu da u Javi nemamo sva ova ograničenja ili ograničenja na reference.
Prosljeđivanje referenci na funkcije
U našim prethodnim tutorijalima o funkcijama već smo razgovarali o tehnici parametara 'proslijediti referencom' i vidjeli smo primjer zamjene dva broja pomoću ove tehnike. Objašnjenje ove tehnike preskačemo u ovom odjeljku i samo još jednom predstavljamo funkciju zamjene kao primjer.
Ali ovaj put umjesto zamjene brojeva zamijenit ćemo dvije žice.
nastavak ručnog ispitivanja za 3 godine iskustva
#include #include using namespace std; void swap(char * &str1, char * &str2) { char *temp = str1; str1 = str2; str2 = temp; } int main() { char *str1 = 'references'; char *str2 = 'pointers'; cout<<'str1 = '< Izlaz:
str1 = reference str2 = pokazivači
Nakon zamjene ...
str1 = pokazivači str2 = reference
Dakle, u ovom programu prosljeđujemo nizove (char *) funkciji swap. Formalni parametri su dvije reference na varijablu tipa char *. Primjećujemo da kada se dvije vrijednosti zamijene, njihova se izmjena odražava u pozivajućoj funkciji jer koristimo reference / aliase za parametre.
Vraćanje referenci
Baš kao i vraćanje pokazivača iz funkcija, također možemo vratiti reference iz funkcija. Vraćanje referenci iz funkcije također vraća implicitni pokazivač na povratnu vrijednost. Iz tog razloga, funkcija koja vraća referencu može se koristiti s lijeve strane zadatka.
Dopustite nam primjer vraćanja reference iz funkcije.
#include using namespace std; int myarray() = {1, 0, 2, 3, 5}; int& setValues( int i ) //returns reference to the array { return myarray(i); } int main () { cout << 'myarray before change' << endl; for ( int i = 0; i < 5; i++ ) { cout << 'myarray(' << i << ') = '; cout << myarray(i) << endl; } setValues(1) = 1; setValues(3) = 8; cout << 'Value after change' << endl; for (int i = 0; i < 5; i++ ) { cout<< 'myarray(' << i << ') = '; cout << myarray(i) << endl; } return 0; }
Izlaz:
myarray prije promjene
myarray (0) = 1
myarray (1) = 0
myarray (2) = 2
myarray (3) = 3
myarray (4) = 5
Vrijednost nakon promjene
myarray (0) = 1
myarray (1) = 1
myarray (2) = 2
myarray (3) = 8
myarray (4) = 5
Snimak zaslona za isti prikazan je u nastavku:

Kao što se vidi u gornjem kodu, definiramo funkciju setValues koja vraća referencu i parametar koji je cijeli broj. Unutar funkcije samo vraćamo referencu niza na položaj I u C ++.
U glavnoj funkciji ispisujemo vrijednosti niza. Zatim pomoću funkcije setValues mijenjamo vrijednosti dva elementa u polju. Opet ispisujemo vrijednost niza.
Jedna stvar koju moramo primijetiti kod referenci je da možemo imati funkciju koja vraća referencu samo kada su podaci statični ili globalni. Vraćanje reference na lokalnu varijablu u C ++-u je protuzakonito.
Zaključak
Čitatelji bi trebali imati na umu da je glavna upotreba referenci za prosljeđivanje parametara funkcijama.
U nadolazećim vodičima pokrivat ćemo lambda funkcije / izraze u C ++-u prije nego što prijeđemo na objektno orijentirano programiranje u C ++-u.
=> Ovdje pogledajte najbolje tutorijale za C ++.
Preporučena literatura
- Najbolji BESPLATNI vodiči za C #: Vrhunski vodič za C # za početnike
- Pokazivači i operacije pokazivača u C ++
- Ispitivanje opterećenja pomoću HP LoadRunner vodiča
- Varijable u C ++
- Objektno orijentirano programiranje na jeziku C ++
- Vodič za cijevi za Unix: Cijevi za programiranje u Unixu
- Knjižnične funkcije na C ++
- 70+ NAJBOLJIH Vodiča za C ++ za BESPLATNO učenje C ++ programiranja