Sådan implementeres opkald ved henvisning i C ++



Denne artikel giver dig en detaljeret viden om Call by Reference i C ++ med implementeringer og hvordan den adskiller sig fra Call by Value.

At arbejde med C ++ er ikke en vanskelig opgave, hvis du allerede har en baggrund i C, da begge deler masser af koncepter med hinanden. Men C ++ har nogle begreber, som ikke er en del af C-paradigmet. I dette kald ved reference i C ++ -artiklen vil vi tale om et sådant koncept, der er referencevariabler og dets applikationer i følgende rækkefølge:

Referencevariabler

C ++ giver os en ny type variabel, dvs. en referencevariabel. Vi kan tænke på en referencevariabel som et kaldenavn på vores oprindelige variabel. Det er det, der er den nøjagtige funktionalitet af en referencevariabel i en linje.





For eksempel, hvis dit navn er Harrison, men derhjemme, kalder dine familiemedlemmer dig Harry. Lad os nu gennemgå nogle detaljer om referencevariabler. Erklæringen og brugen af ​​denne type variabler adskiller sig fra de sædvanlige variabler, vi bruger, men ligner meget markørvariablerne.

Syntaks:



int Hej = 1 int * ptr int & Verden = Hej

Når vi opretter en variabel 'Hej', der indeholder værdien '1', bruges et segment af hukommelse til at øve værdien '1', navnet på dette segment vil være 'Hej' og adressen på dette segment vil være en hexadecimal værdi for eksempel0x64. når vi skriverint& Verden = Hej'Verden' -variabel oprettes, der peger mod den samme hukommelsesplacering.

Inkludering af linjen World ++ foretager ændringer i adresse 0x64, hvilket betyder, at værdien af ​​variablen 'Hej' også vil ændre sig. Nogle kan påpege, at hvordan er det referencevariabler, der adskiller sig fra markørvariablerne, som vi vil diskutere i sidste del af dette indlæg.

Opkald efter værdi og Opkald efter reference i C ++

Opkald efter værdi: Opkald efter værdi er en udbredt metode. De fleste gange bruger du metoden Call by Value, da du ikke ønsker, at dine originale værdier for variablerne skal ændres. Derfor brugte vi call by value-metoden til at kalde en funktion, kun værdierne for variablerne overføres. Dette opnås ved at oprette dummyvariabler i hukommelsen.



hvordan man vender streng i python
#include ved hjælp af namespace std void add (int a, int b) {a = a + 10 b = b + 10 cout<<'Value of a = '<  Opkald efter værdi i C ++

Fra ovenstående billede kan vi se, at så snart vi kalder funktionen add (), kopieres værdierne for x- og y-variabler til variabler a og b. A og b er dummyvariabler.

Ring ved henvisning: Lad os nu tale om opkaldet ved hjælp af referencemetoden. I denne metode oprettes der ikke separate dummyvariabler, en reference til en allerede eksisterende variabel sendes til metoden. Denne reference peger på den samme hukommelsesplacering, hvorfor der ikke laves separate kopier i hukommelsen. Det vigtige punkt, der skal bemærkes her, er, at ændringerne i referencevariablerne afspejles i dummy-variablen.

java dobbelt til int konvertering
#include ved hjælp af namespace std void add (int & a, int & b) {a = a + 10 b = b + 10 cout<<'Value of a = '< int & min (int & a, int & b) {if (a 

Som vi kan se, at ovenstående funktion ser anderledes ud sammenlignet med normale funktioner, da returtypen er 'int &'. Denne funktion returnerer en henvisning til a eller b afhængigt af tilstanden. Det vigtige punkt at bemærke her er, at værdiernereturneres ikke.

Hvis vi kalder funktionen min (x, y) = 10. 10 tildeles x, hvis den er minimum eller til y, hvis y er minimum.

Ring ved henvisning mod markør

I alle vores eksempler så vi, at vi altid tildelte en værdi til den referencevariabel, vi oprettede, da referencevariablerne ikke kan være NULL, mens markørvariablerne kan være NULL og kan forårsage uventede fejl.

hvordan man bruger splitmetoden i java

Referencevariabler kan ikke tildeles igen, mens markørvariabler kan pege på en anden variabel senere i programmet.

En markørvariabel indeholder adresseværdien for en bestemt variabel, mens adressen for referencevariablen er den samme som for den variabel, den henviser til.

Med dette kommer vi til slutningen af ​​denne Call By Reference i C ++ - artiklen. Jeg håber, du har fået en forståelse af den forskellige implementering af opkaldet efter værdi og reference, og hvordan de begge adskiller sig.

Hvis du ønsker at lære mere, skal du tjekke af Edureka, et pålideligt online læringsfirma. Edurekas Java J2EE- og SOA-uddannelses- og certificeringskursus er designet til at træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Spring.

Har du et spørgsmål til os? Nævn det i kommentarsektionen på denne blog, og vi vender tilbage til dig hurtigst muligt.