references c
Bli kjent med måtene å erklære og bruke referanser i C ++.
Referanse er et hovedkonsept i C ++ programmeringsspråk. Selv om det ikke er så sterkt som pekere, lar det oss likevel bruke det til å skrive effektive programmer. Hovedbruken av referansevariabelen er å overføre parametere til funksjoner.
Den populære 'pass by reference' parameter-overføringsteknikken bruker referanser. I denne opplæringen vil vi se hva en referanse er, og hvordan vi kan erklære og bruke den. Vi vil også diskutere forskjellene mellom pekere og referanser, samt sende og returnere en referanse til / fra funksjoner.
=> Se her for å utforske hele C ++ opplæringslisten.
Hva du vil lære:
- Hva er en referanse?
- Erklæring om referansevariabler
- Referanse mot pekere
- Gi referanser til funksjoner
- Returreferanser
- Konklusjon
- Anbefalt lesing
Hva er en referanse?
Referanse er et alias eller et annet navn for en variabel. Gitt en variabel med en identifikator, kan vi gi en annen identifikator til denne variabelen, slik at vi kan referere til denne variabelen enten med sitt opprinnelige navn eller et annet navn. Dette ‘et annet navn’ er det som kalles en referanse.
Tenk at vi har en variabel ‘i’ med verdi 17. Hvis j er en referanse, vises hukommelsesrepresentasjonen av variabelen i og referansen j nedenfor.
Som vist i figuren ovenfor, en variabel og dens alias, dvs. referansepunkt til samme verdi.
Erklæring om referansevariabler
En referanse kan erklæres ved hjelp av '&' operatøren.
Henvisningserklæringen er vist nedenfor.
int a = 10; int& refvar = a;
Så i koden ovenfor har vi deklarert en heltallvariabel med verdi 10. Deretter erklærer vi en annen variabel refvar og tilordner en variabel til den. Merk at mens vi erklærer refvar, har vi brukt & operator rett før variabelnavnet. Dette indikerer at refvar er en referanse til en allerede eksisterende variabel.
Vi kan referere til variabelen ‘a’ enten ved å bruke variabelnavnet a eller bruke referansenavnet ‘refvar’.
flett sorteringskode i c ++ med rekursjon
Nedenfor er et enkelt eksempel på referanser:
#include #include using namespace std; int main() { int age = 22; int& numYears = age; double salary = 10000.00; double& wages = salary; cout<<'Age: '< Produksjon:
Alder: 22
NumÅr: 22
Lønn: 10000
Lønn: 10000
I koden ovenfor har vi en heltallsvariabel alder. Deretter erklærer vi en referanse heltallvariabel numYears til aldersvariabelen. Vi har en annen variabel lønn av typen dobbelt. Deretter erklærer vi en dobbel referanse til variabel lønn til den variable lønnen.
Deretter skriver vi ut variablene, første alder, deretter blir referansen fulgt av lønn og referanse. Hvis vi sjekker utdataene til programmet, forstår vi at variabelen og henvisning til den peker på samme verdi, og derfor har Alder og antallÅr, samt lønn og lønn, de samme verdiene.
Referanse mot pekere
Sammenlignet med pekere er referanser tryggere og enklere å bruke.
Vi vil diskutere noen forskjeller mellom pekere og referanser:
- I motsetning til pekere, kan referanser ikke ha en nullverdi. Det er obligatorisk for referanser å ha en verdi tildelt.
- Referanser initialiseres i det øyeblikket de opprettes. I motsetning til dette, kan pekere initialiseres når som helst og ikke nødvendigvis under erklæring.
- Pekere kan tildeles til verdiene på en enkel måte. Men med referanser kan vi ikke gjøre dette. Når en verdi av variabelen er tildelt, dvs. når en alias for en variabel er opprettet, kan vi ikke tilordne en annen variabel til denne referansen.
- Vi har ikke ugyldige referanser. Per definisjon er en referanse et alias for variabelen, og den initialiseres under selve etableringen. Dermed er det ingen sjanse for at vi har ugyldig referanse og senere tilordner en variabel med en konkret datatype til den. Derimot kan vi ha ugyldige pekere.
På grunn av denne begrensningen diskutert ovenfor, kan ikke referansene i C ++ brukes med datastrukturer som en koblet liste. Vær oppmerksom på at i Java har vi ikke alle disse begrensningene eller begrensningene på referanser.
Gi referanser til funksjoner
I våre tidligere veiledninger om funksjoner har vi allerede diskutert parameteren 'pass by reference' og vi har sett bytte av to talleksempler ved hjelp av denne teknikken. Vi hopper over forklaringen på denne teknikken i dette avsnittet og presenterer bare en byttefunksjon igjen som et eksempel.
Men denne gangen, i stedet for å bytte tall, skal vi bytte to strenger.
#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 = '< Produksjon:
str1 = referanser str2 = pekere
Etter bytte….
str1 = pekere str2 = referanser
Så i dette programmet sender vi strenger (char *) til byttefunksjonen. De formelle parametrene er to referanser til en variabel av typen char *. Vi bemerker at når to verdier byttes, gjenspeiles deres modifisering i anropsfunksjonen ettersom vi bruker referanser / aliaser for parametere.
Returreferanser
Akkurat som å returnere pekere fra funksjoner, kan vi også returnere referanser fra funksjoner. Returnerende referanser fra en funksjon returnerer også en implisitt peker til returverdien. Av denne grunn kan en funksjon som returnerer en referanse brukes på venstre side av oppgaven.
La oss et eksempel på å returnere en referanse fra en funksjon.
vinkelmåler test-rammeverk til slutt for angularjs-apper
#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; }
Produksjon:
myarray før endring
myarray (0) = 1
myarray (1) = 0
myarray (2) = 2
myarray (3) = 3
myarray (4) = 5
Verdi etter endring
myarray (0) = 1
myarray (1) = 1
myarray (2) = 2
myarray (3) = 8
myarray (4) = 5
Skjermbilde for det samme er vist nedenfor:

Som vi ser i koden ovenfor, definerer vi et funksjonssettValues som returnerer en referanse og en parameter som er et heltall. Inne i funksjonen returnerer vi bare matereferansen til posisjonen I i C ++.
I hovedfunksjonen skriver vi ut verdiene til matrisen. Deretter endrer vi verdiene til to elementer i matrisen ved å bruke setValues-funksjonen. Igjen skriver vi ut verdien av matrisen.
En ting som vi må merke oss med referanser er at vi kan få en funksjon til å returnere en referanse bare når dataene er enten statiske eller globale. Det er ulovlig å returnere en referanse til en lokal variabel i C ++.
Konklusjon
Leserne bør merke seg at hovedbruken av referanser er å overføre parametere til funksjonene.
I de kommende opplæringene vil vi dekke lambda-funksjoner / uttrykk i C ++ før vi hopper til objektorientert programmering i C ++.
=> Sjekk ut de beste C ++ opplæringsveiledningene her.
Anbefalt lesing
- Beste GRATIS C # opplæringsserie: The Ultimate C # Guide For Beginners
- Pekere og pekeroperasjoner i C ++
- Lastetesting med HP LoadRunner-veiledninger
- Variabler i C ++
- Objektorientert programmering i C ++
- Unix Pipes Tutorial: Pipes in Unix Programming
- Biblioteksfunksjoner i C ++
- 70+ BEST C ++ opplæringsprogrammer for å lære C ++ programmering GRATIS