references c
Lär känna sätten att förklara och använda referenser i C ++.
Referens är ett stort begrepp inom C ++ programmeringsspråk. Även om det inte är så starkt som pekare, ändå låter det oss använda det för att skriva effektiva program. Den huvudsakliga användningen av referensvariabeln är att skicka parametrar till funktioner.
Den populära 'pass by reference' -parametern skickar teknik använder referenser. I denna handledning kommer vi att se vad en referens är och hur man deklarerar och använder den. Vi kommer också att diskutera skillnaderna mellan pekare och referenser samt att skicka och returnera en referens till / från funktioner.
=> Se här för att utforska listan med fullständiga C ++ -studier.
Vad du kommer att lära dig:
- Vad är en referens?
- Förklara referensvariabler
- Referens mot pekare
- Skicka referenser till funktioner
- Återkommande referenser
- Slutsats
- Rekommenderad läsning
Vad är en referens?
Referens är ett alias eller ett annat namn för en variabel. Med en variabel med en identifierare kan vi tillhandahålla en annan identifierare till denna variabel så att vi kan hänvisa till denna variabel antingen med sitt ursprungliga namn eller ett annat namn. Detta ”annat namn” kallas som referens.
Tänk på att vi har en variabel 'i' med värdet 17. Om j är en referens visas minnesrepresentationen för variabel i och referens j nedan.
Som visas i figuren ovan, en variabel och dess alias, dvs. referenspunkt till samma värde.
Förklara referensvariabler
En referens kan förklaras med operatören '&'.
Referensförklaringen visas nedan.
int a = 10; int& refvar = a;
Så i ovanstående kod har vi deklarerat en heltalsvariabel med värdet 10. Sedan deklarerar vi en annan variabel refvar och tilldelar den en variabel. Observera att när vi förklarar refvar har vi använt & operator strax före variabelnamnet. Detta indikerar att refvar är en referens till en redan existerande variabel.
Vi kan hänvisa till variabeln 'a' antingen genom att använda variabelnamnet a eller med referensnamnet 'refvar'.
livscykelmodeller för utveckling av vattenfallsprogramvara
Nedan följer ett enkelt exempel på referenser:
#include #include using namespace std; int main() { int age = 22; int& numYears = age; double salary = 10000.00; double& wages = salary; cout<<'Age: '< Produktion:
Ålder: 22
Antal år: 22
Lön: 10000
Löner: 10000
I ovanstående kod har vi ett heltal variabel ålder. Därefter deklarerar vi en referens heltalsvariabel numYears till åldersvariabeln. Vi har en annan rörlig lön av typen dubbel. Därefter förklarar vi en dubbel referens rörlig lön till den rörliga lönen.
Därefter skriver vi ut variablerna, första åldern sedan följs dess referens av lön och dess referens. Om vi kontrollerar programmets resultat förstår vi att variabeln och referens till den pekar på samma värde och därmed ålder och antal år, liksom lön och löner, har samma värden.
Referens mot pekare
Jämfört med pekare är referenser säkrare och lättare att använda.
Vi kommer att diskutera några skillnader mellan pekare och referenser:
- Till skillnad från pekare kan referenser inte ha ett nullvärde. Det är obligatoriskt att referenser har ett värde tilldelat.
- Referenser initialiseras när de skapas. Till skillnad från detta kan pekare initieras när som helst och inte nödvändigtvis under deklarationen.
- Pekare kan omfördelas till värdena med lätthet. Men med referenser kan vi inte göra detta. När ett värde på variabeln har tilldelats, dvs. när ett alias för en variabel har skapats, kan vi inte tilldela en annan variabel till denna referens.
- Vi har inga ogiltiga referenser. Per definition är en referens ett alias för variabeln och den initialiseras under själva skapelsen. Det finns alltså ingen chans att vi har en ogiltig referens och senare tilldelar en variabel med en konkret datatyp till den. Däremot kan vi ha ogiltiga pekare.
På grund av dessa begränsningar som diskuterats ovan kan referenser i C ++ inte användas med datastrukturer som en länkad lista. Observera att i Java har vi inte alla dessa begränsningar eller begränsningar av referenser.
Skicka referenser till funktioner
I våra tidigare handledning om funktioner har vi redan diskuterat parametertekniken ”pass by reference” och vi har sett bytet av två siffror som använder denna teknik. Vi hoppar över förklaringen av denna teknik i det här avsnittet och presenterar bara en swap-funktion igen som ett exempel.
Men den här gången istället för att byta nummer kommer vi att byta två strängar.
#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 = referenser str2 = pekare
Efter byte….
str1 = pekare str2 = referenser
Så i det här programmet skickar vi strängar (char *) till swap-funktionen. De formella parametrarna är två referenser till en variabel av typen char *. Vi noterar att när två värden byts ut återspeglas deras ändring i anropsfunktionen eftersom vi använder referenser / alias för parametrar.
Återkommande referenser
Precis som att returnera pekare från funktioner kan vi också returnera referenser från funktioner. Returreferenser från en funktion returnerar också en implicit pekare till returvärdet. Av denna anledning kan en funktion som returnerar en referens användas på vänster sida av uppdraget.
Låt oss ett exempel på hur man returnerar en referens från 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öre förändring
myarray (0) = 1
myarray (1) = 0
myarray (2) = 2
myarray (3) = 3
myarray (4) = 5
Värde efter förändring
myarray (0) = 1
myarray (1) = 1
myarray (2) = 2
myarray (3) = 8
myarray (4) = 5
Skärmdump för samma visas nedan:
skillnad mellan klientserver och webbaserad applikation

Som vi ser i koden ovan definierar vi en funktion setValues som returnerar en referens och en parameter som är ett heltal. Inuti funktionen returnerar vi bara matrisreferensen till positionen I i C ++.
I huvudfunktionen skriver vi ut värdena för matrisen. Sedan använder vi funktionen setValues och ändrar värdena för två element i matrisen. Återigen skriver vi ut värdet på matrisen.
En sak som vi måste notera med referenser är att vi kan få en funktion att returnera en referens endast när data är antingen statiska eller globala. Det är olagligt att returnera en referens till en lokal variabel i C ++.
Slutsats
Läsarna bör notera att den huvudsakliga användningen av referenser är för att skicka parametrar till funktioner.
I de kommande handledningarna kommer vi att täcka lambdafunktioner / uttryck i C ++ innan vi hoppar till objektorienterad programmering i C ++.
=> Kolla in de bästa C ++ träningsövningarna här.
Rekommenderad läsning
- Bästa GRATIS C # -handledningsserie: Den ultimata C # -guiden för nybörjare
- Pekare och pekfunktioner i C ++
- Lasttestning med HP LoadRunner-handledning
- Variabler i C ++
- Objektorienterad programmering i C ++
- Unix Pipes Tutorial: Pipes in Unix Programming
- Biblioteksfunktioner i C ++
- 70+ BEST C ++ självstudier för att lära dig C ++ programmering GRATIS