references c
Lær måderne at erklære og bruge referencer på i C ++.
Reference er et hovedbegreb inden for C ++ programmeringssprog. Selvom det ikke er så stærkt som pegepinde, giver det os alligevel mulighed for at bruge det til at skrive effektive programmer. Den største anvendelse af referencevariablen er at videregive parametre til funktioner.
Den populære 'forbipasserende' parameter videregående teknik gør brug af referencer. I denne vejledning vil vi se, hvad en reference er, og hvordan man erklærer og bruger den. Vi vil også diskutere forskellene mellem markører og referencer samt videregive og returnere en henvisning til / fra funktioner.
=> Se her for at udforske den komplette C ++ tutorials-liste.
Hvad du lærer:
- Hvad er en reference?
- Erklærende referencevariabler
- Reference mod markører
- Videregivelse af henvisninger til funktioner
- Tilbagevendende referencer
- Konklusion
- Anbefalet læsning
Hvad er en reference?
Reference er et alias eller et andet navn for en variabel. Givet en variabel med en identifikator, kan vi give en anden identifikator til denne variabel, så vi kan henvise til denne variabel enten med dens oprindelige navn eller et andet navn. Dette 'andet navn' kaldes en reference.
Overvej, at vi har en variabel 'i' med værdi 17. Hvis j er en reference, vises hukommelsesrepræsentationen for variabel i og reference j nedenfor.
Som vist i ovenstående figur, er en variabel og dens alias, dvs. referencepunkt til den samme værdi.
Erklærende referencevariabler
En reference kan erklæres ved hjælp af '&' operatoren.
Henvisningserklæringen er vist nedenfor.
int a = 10; int& refvar = a;
Så i ovenstående kode har vi deklareret en heltalsvariabel med værdi 10. Derefter erklærer vi en anden variabel refvar og tildeler den en variabel. Bemærk, at mens vi erklærer refvar, har vi brugt & operator lige før variabelnavnet. Dette indikerer, at refvar er en henvisning til en allerede eksisterende variabel.
Vi kan henvise til variablen 'a' enten ved hjælp af variabelnavnet a eller ved hjælp af referencenavnet 'refvar'.
software engineering interview spørgsmål og svar pdf
Nedenfor er et simpelt eksempel på referencer:
#include #include using namespace std; int main() { int age = 22; int& numYears = age; double salary = 10000.00; double& wages = salary; cout<<'Age: '< Produktion:
Alder: 22
Antal år: 22
Løn: 10000
Løn: 10000
I ovenstående kode har vi et heltal variabel alder. Dernæst erklærer vi en reference-heltalsvariabel numYears til aldersvariablen. Vi har en anden variabel løn af typen dobbelt. Dernæst erklærer vi en dobbelt reference variabel løn til den variable løn.
Dernæst udskriver vi variablerne, først alder derefter dens reference efterfølges af løn og dens reference. Hvis vi kontrollerer output fra programmet, forstår vi, at variabel og henvisning til det peger på den samme værdi, og derfor har Alder og antalYears, såvel som løn og løn, de samme værdier.
Reference mod markører
Sammenlignet med henvisninger er referencer sikrere og lettere at bruge.
Vi vil diskutere et par forskelle mellem henvisninger og referencer:
- I modsætning til henvisninger kan referencer ikke have en nulværdi. Det er obligatorisk for referencer at have en værdi tildelt.
- Referencer initialiseres i det øjeblik de oprettes. I modsætning til dette kan markører initialiseres på ethvert tidspunkt og ikke nødvendigvis under erklæring.
- Markører kan let tildeles til værdierne. Men med referencer kan vi ikke gøre dette. Når en værdi af variablen er tildelt, dvs. når der først oprettes et alias for en variabel, kan vi ikke tildele en anden variabel til denne reference.
- Vi har ikke ugyldige referencer. Per definition er en reference et alias for variablen, og den initialiseres under selve oprettelsen. Der er således ingen chance for, at vi har ugyldig reference og senere tildeler en variabel med en konkret datatype til den. I modsætning hertil kan vi have ugyldige henvisninger.
På grund af disse begrænsninger, der er diskuteret ovenfor, kan referencerne i C ++ ikke bruges med datastrukturer som en sammenkædet liste. Bemærk, at vi i Java ikke har alle disse begrænsninger eller begrænsninger i referencer.
Videregivelse af henvisninger til funktioner
I vores tidligere tutorials om funktioner har vi allerede diskuteret parameter-teknikken 'pass by reference', og vi har set bytte af to tal eksempel ved hjælp af denne teknik. Vi springer over forklaringen på denne teknik i dette afsnit og præsenterer kun en swap-funktion igen som et eksempel.
Men denne gang i stedet for at bytte tal skal vi bytte to strenge.
#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 = '< Produktion:
str1 = referencer str2 = pointer
Efter bytte….
str1 = pointer str2 = referencer
Så i dette program videregiver vi strenge (char *) til swap-funktionen. De formelle parametre er to referencer til en variabel af typen char *. Vi bemærker, at når to værdier byttes, reflekteres deres ændring i opkaldsfunktionen, da vi bruger referencer / aliaser til parametre.
Tilbagevendende referencer
Ligesom at returnere markører fra funktioner, kan vi også returnere referencer fra funktioner. Returnerende referencer fra en funktion returnerer også en implicit markør til returværdien. Af denne grund kan en funktion, der returnerer en reference, bruges på opgavens venstre side.
Lad os et eksempel på at returnere en reference fra en funktion.
#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; }
Produktion:
myarray før ændring
myarray (0) = 1
myarray (1) = 0
myarray (2) = 2
myarray (3) = 3
myarray (4) = 5
Værdi efter ændring
myarray (0) = 1
myarray (1) = 1
myarray (2) = 2
myarray (3) = 8
myarray (4) = 5
Skærmbillede af det samme er vist nedenfor:
teknisk support analytiker interview spørgsmål og svar
Som det ses i ovenstående kode, definerer vi en funktion setValues, der returnerer en reference og en parameter, der er et heltal. Inde i funktionen returnerer vi bare matrixreferencen til positionen I i C ++.
I hovedfunktionen udskriver vi værdierne i arrayet. Derefter ændrer vi værdierne for to elementer i arrayet ved hjælp af funktionen setValues. Igen udskriver vi matrixens værdi.
En ting, som vi skal bemærke med referencer, er at vi kun kan få en funktion til at returnere en reference, når dataene enten er statiske eller globale. Det er ulovligt at returnere en henvisning til en lokal variabel i C ++.
Konklusion
Læsere skal bemærke, at den primære anvendelse af referencer er til at overføre parametre til funktioner.
I de kommende tutorials vil vi dække lambda-funktioner / udtryk i C ++, før vi hopper til objektorienteret programmering i C ++.
=> Tjek de bedste C ++ træningsvejledninger her.
Anbefalet læsning
- Bedste GRATIS C # tutorialsserie: Den ultimative C # guide til begyndere
- Markører og markørfunktioner i C ++
- Load Testing med HP LoadRunner-vejledninger
- Variabler i C ++
- Objektorienteret programmering i C ++
- Unix Pipes Tutorial: Pipes in Unix Programming
- Biblioteksfunktioner i C ++
- 70+ BEST C ++ tutorials til at lære C ++ programmering GRATIS