references c
Spoznajte načine razglasitve in uporabe referenc v jeziku C ++.
Referenca je glavni pojem v programskem jeziku C ++. Čeprav ni tako močan kot kazalci, nam kljub temu omogoča, da ga uporabljamo za pisanje učinkovitih programov. Glavna uporaba referenčne spremenljivke je pri prenašanju parametrov v funkcije.
V priljubljeni tehniki posredovanja parametrov »pass by reference« se uporabljajo reference. V tej vadnici bomo videli, kaj je referenca in kako jo prijaviti in uporabiti. Prav tako bomo razpravljali o razlikah med kazalci in sklici ter o prenosu in vrnitvi sklica na / iz funkcij.
=> Za ogled celotnega seznama vadnic za C ++ glejte tukaj.
Kaj se boste naučili:
- Kaj je referenca?
- Izjava o referenčnih spremenljivkah
- Referenčni Vs kazalci
- Prenos referenc na funkcije
- Vrnitev referenc
- Zaključek
- Priporočeno branje
Kaj je referenca?
Referenca je vzdevek ali drugo ime spremenljivke. Glede na spremenljivko z identifikatorjem lahko tej spremenljivki damo drug identifikator, tako da se nanjo lahko sklicujemo bodisi z izvirnim imenom bodisi z drugim imenom. To 'drugo ime' je tisto, kar se imenuje referenca.
Predpostavimo, da imamo spremenljivko 'i' z vrednostjo 17. Če je j referenca, potem je spodnja predstavitev pomnilniške predstavitve spremenljivke i in reference j.
Kot je prikazano na zgornji sliki, spremenljivka in je vzdevek, tj. Referenčna točka na isto vrednost.
Izjava o referenčnih spremenljivkah
Sklic je mogoče prijaviti z uporabo operatorja '&'.
Referenčna izjava je prikazana spodaj.
int a = 10; int& refvar = a;
Torej smo v zgornji kodi razglasili celoštevilčno spremenljivko z vrednostjo 10. Nato deklariramo drugo spremenljivko refvar in ji dodelimo spremenljivko. Upoštevajte, da smo med razglasitvijo refvar uporabili & operator tik pred imenom spremenljivke. To pomeni, da je refvar sklic na že obstoječo spremenljivko.
Na spremenljivko „a“ se lahko sklicujemo bodisi z uporabo imena spremenljivke a bodisi z uporabo referenčnega imena „refvar“.
reševanje težkih razmer v službi
Spodaj je preprost primer reference:
#include #include using namespace std; int main() { int age = 22; int& numYears = age; double salary = 10000.00; double& wages = salary; cout<<'Age: '< Izhod:
Starost: 22 let
Število let: 22
Plača: 10000
Plače: 10000
V zgornji kodi imamo celoštevilčno spremenljivko starost. Nato deklariramo referenčno celoštevilčno spremenljivko numYears za starostno spremenljivko. Imamo še eno spremenljivo plačo tipa double. Nato razglasimo dvojno referenco spremenljivke plače na spremenljivko plače.
Nato natisnemo spremenljivke, najprej starost, nato sklicu sledi plača in referenca. Če preverimo rezultate programa, razumemo, da spremenljivka in sklic nanjo kažeta na isto vrednost, zato imajo starost in število let ter plače in plače enake vrednosti.
Referenčni Vs kazalci
V primerjavi s kazalci so sklici varnejši in enostavnejši za uporabo.
kako odpreti datoteko .dat
Obravnavali bomo nekaj razlik med kazalci in referencami:
- Za razliko od kazalcev sklici ne smejo imeti vrednosti nič. Za sklice je obvezna dodelitev vrednosti.
- Sklici se inicializirajo v trenutku, ko so ustvarjeni. Za razliko od tega se kazalci lahko inicializirajo kadar koli in ne nujno med deklaracijo.
- Kazalce lahko enostavno dodelite vrednostim. Toda z referencami tega ne moremo storiti. Ko je dodeljena vrednost spremenljivke, tj. Ko je vzdevek spremenljivke ustvarjen, tej referenci ne moremo dodeliti druge spremenljivke.
- Nimamo praznih referenc. Po definiciji je sklic vzdevek spremenljivke in se inicializira med samim ustvarjanjem. Tako ni možnosti, da bomo imeli neveljavno referenco in ji kasneje dodelili spremenljivko s konkretnim podatkovnim tipom. V nasprotju s tem imamo lahko prazne kazalce.
Zaradi zgoraj omenjenih omejitev referenc v jeziku C ++ ni mogoče uporabljati s podatkovnimi strukturami, kot je povezan seznam. Upoštevajte, da v Javi nimamo vseh teh omejitev ali omejitev glede referenc.
Prenos referenc na funkcije
V naših prejšnjih vadnicah o funkcijah smo že razpravljali o tehniki parametrov 'mimo reference' in videli smo primer zamenjave dveh števil s to tehniko. V tem razdelku preskočimo razlago te tehnike in samo še enkrat predstavimo funkcijo zamenjave.
Toda tokrat bomo namesto zamenjave številk zamenjali dva niza.
#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 = '< Izhod:
str1 = sklici str2 = kazalci
Po zamenjavi….
str1 = kazalci str2 = reference
Tako v tem programu prenesemo nize (char *) v funkcijo zamenjave. Formalna parametra sta dva sklica na spremenljivko tipa char *. Upoštevamo, da se pri zamenjavi dveh vrednosti njihova sprememba odraža v klicni funkciji, saj za parametre uporabljamo sklice / vzdevke.
Vrnitev referenc
Tako kot vračanje kazalcev iz funkcij, lahko tudi funkcije vrnemo sklice. Vrnitev referenc iz funkcije vrne tudi implicitni kazalec na vrnjeno vrednost. Zaradi tega lahko funkcijo, ki vrne referenco, uporabimo na levi strani dodelitve.
Navedimo primer vrnitve sklica 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; }
Izhod:
myarray pred spremembo
myarray (0) = 1
myarray (1) = 0
myarray (2) = 2
myarray (3) = 3
myarray (4) = 5
Vrednost po spremembi
myarray (0) = 1
myarray (1) = 1
myarray (2) = 2
myarray (3) = 8
myarray (4) = 5
Posnetek zaslona za isto je prikazan spodaj:

Kot je razvidno iz zgornje kode, definiramo funkcijo setValues, ki vrne referenco in parameter, ki je celo število. Znotraj funkcije vrnemo sklic na matriko na položaj I v jeziku C ++.
V glavni funkciji izpišemo vrednosti polja. Nato s funkcijo setValues spremenimo vrednosti dveh elementov v matriki. Spet natisnemo vrednost polja.
Pri referencah moramo opozoriti na to, da lahko funkcija vrne referenco samo, če so podatki statični ali globalni. Vračanje sklica na lokalno spremenljivko v jeziku C ++ je nezakonito.
Zaključek
Bralci naj upoštevajo, da se referenca uporablja predvsem za posredovanje parametrov funkcijam.
V prihodnjih vajah bomo obravnavali lambda funkcije / izraze v jeziku C ++, preden bomo prešli na objektno usmerjeno programiranje v jeziku C ++.
=> Tukaj si oglejte najboljše vadnice za C ++.
Priporočeno branje
- Najboljša BREZPLAČNA vadnica za C #: Ultimate C # Guide za začetnike
- Kazalci in operacije kazalcev v jeziku C ++
- Testiranje obremenitve z vadnicami HP LoadRunner
- Spremenljivke v C ++
- Objektno usmerjeno programiranje v jeziku C ++
- Vadnica za cevi Unix: Cevi v programiranju Unix
- Knjižnične funkcije v jeziku C ++
- 70+ NAJBOLJŠIH vaj za C ++ za BREZPLAČNO učenje C ++ programiranja