C ++ Opkald efter adresse og Opkald efter reference

C Call Address



C ++ er et fleksibelt programmeringssprog til generelle formål. Det blev oprindeligt skabt af Bjarne Stroustrup, en dansk datalog, tilbage i 1985. C ++ understøtter tre-parameter videregivelsesmetoder, dvs. opkald efter værdi, opkald efter adresse og opkald ved reference. I denne artikel vil vi diskutere om opkald efter adresse og opkald efter referencemekanisme.

Hvad er en funktion?

Inden vi hopper ind i det egentlige emne, skal vi forstå, hvad funktionen er i C ++. Mange af jer kender måske allerede funktioner.







En funktion er dybest set et stykke kode, der kan bruges til at udføre en bestemt opgave. En funktion bruges hovedsageligt til at reducere den gentagne kode i et C ++ - program. Det tager input som parametre og returnerer output som en returværdi. Hvis vi definerer funktionen én gang, kan vi kalde/bruge den flere gange i den senere del af vores program. På den måde gemmer vi en masse gentagende kode i programmet.



Hvert C ++ - program skal have hovedfunktionen (). Hovedfunktionen () er startpunktet for et C ++ - program. Bortset fra hovedfunktionen () kan programmereren definere så mange funktioner, som de vil.



Her er syntaksen for at definere en funktion:





Return_type Function_Name(Input parameter Liste)

Funktion i C ++ kan acceptere 0 eller flere antal inputparametre, mens den kun kan returnere en returværdi.

Hvad er adresse?

Der er to typer variabler i C ++ (ligner C -sprog) - Datavariabel og Adressevariabel. Adressevariablen bruges til at gemme adressen på en anden datavariabel. Lad os for eksempel overveje følgende kodestykke:



intjeg= 100;
int *ptr= &jeg;

Her fortæller den første sætning os, at variablen i er en datavariabel, og den lagrer værdien 100. I den anden sætning deklarerer vi en markørvariabel, dvs. ptr, og initialiserer den med adressen på variablen i.

Hvad er reference?

Referencen er en anden stærk funktion i C ++ sprog. Lad os overveje følgende kodestykke:

inttil= 200;
int &r=til;

I dette eksempel har vi erklæret et helt tal, dvs. a og derefter erklæret en referencevariabel variabel r, som initialiseres med værdien af ​​a. Så referencevariablen er ikke andet end et alias for en anden variabel.

Parameterpasseringsmetoder:

Der er tre typer parameteroverførselsmetoder i C ++ sprog:

  1. Opkald efter værdi / Pass efter værdi
  2. Ring efter adresse / Gå forbi adresse
  3. Ring efter reference / Pass ved reference

I denne artikel diskuterer vi om - Opkald efter adresse og Opkald efter reference.

Hvad er Call By Address / Pass by address?

I tilfælde af metoden Opkald efter adresse / Adgang til adresse, sendes funktionsargumenterne som adresse. Opkaldsfunktionen passerer adressen på parametrene. Markørvariabler bruges i funktionsdefinitionen. Ved hjælp af Call by address -metoden kan funktionen få adgang til de faktiske parametre og ændre dem. Vi vil se et eksempel på opkaldsmetoden senere afsnit i denne artikel.

Hvad er Call By Reference / Pass by reference?

I metoden Call by reference / Pass by reference sendes funktionsparametrene som reference. Inde i funktionsdefinitionen får du adgang til de faktiske parametre ved hjælp af referencevariablen.

Eksempler:

Nu, da vi forstår begrebet parameteroverførselsmetoder, vil vi se flere eksempler på programmer til at forstå parameteroverførselsmekanismen i C ++:

  1. Eksempel-1-Opkald efter adresse (1)
  2. Eksempel-2-Opkald efter adresse (2)
  3. Eksempel-3-Opkald efter reference (1)
  4. Eksempel-4-Opkald efter reference (2)

De to første eksempler er givet for at forklare, hvordan Call by address -metoden fungerer i C ++. De sidste to eksempler er at forklare Call by reference -konceptet.

Eksempel-1-Opkald efter adresse (1)

I dette eksempel vil vi demonstrere opkald efter adressemekanisme. Fra hovedfunktionen () kalder vi funktionen hej () og sender var. I funktionsdefinitionen modtager vi adressen på var i en markørvariabel, dvs. p. Inde i funktionen hej ændres værdien af ​​var til 200 ved hjælp af markøren. Derfor ændres værdien af ​​var til 200 inde i hovedfunktionen () efter opkaldet hej ().

#omfatte
ved brug af navnerumtimer;

ugyldigHej(int *s. s)
{
koste <<endl<< 'Inside hello () funktion:' <<endl;
koste << 'Værdi af *p =' << *s. s<<endl;
*s. s= 200;
koste << 'Værdi af *p =' << *s. s<<endl;
koste << 'Afslutter hej () funktion.' <<endl;
}

intvigtigste()
{
inthvor= 100;
koste << 'Værdi af var inde main () funktion =' <<hvor<<endl;

Hej(&hvor);

koste <<endl<< 'Værdi af var inde main () funktion =' <<hvor<<endl;

Vend tilbage 0;
}

Eksempel-2-Opkald efter adresse (2)

Dette er et andet eksempel på metode til opkald efter adresse. I dette eksempel vil vi forklare, hvordan opkald efter adresse-metoden kan bruges til at løse et problem i virkeligheden. For eksempel vil vi skrive en funktion til at skifte to variabler. Hvis vi bruger call by value -mekanismen til at bytte to variabler, bliver de faktiske variabler ikke byttet i opkaldsfunktionen. Opkald efter adresse -metoden kan bruges i et sådant scenario. I dette eksempel sender vi adressen på både var_1 (& var_1) og var_2 (& var_2) til funktionen mySwap (). Inde i mySwap () -funktionen bytter vi værdierne for disse to variabler ved hjælp af pointerne. Som du kan se i nedenstående output, bliver den faktiske værdi af disse variabler skiftet ud i hovedfunktionen (), efter at funktionen mySwap () er udført.

#omfatte
ved brug af navnerumtimer;

ugyldigmySwap(int *vptr_1,int *vptr_2)
{
inttemp_var;
temp_var= *vptr_1;
*vptr_1= *vptr_2;
*vptr_2=temp_var;
}

intvigtigste()
{
intvar_1= 100;
intvar_2= 300;

koste << 'Før du kalder funktionen mySwap (), værdien af ​​var_1:' <<var_1<<endl;
koste << 'Inden du kalder funktionen mySwap (), værdien af ​​var_2:' <<var_2<<endl<<endl;

koste << 'Calling mySwap () funktion - Ring efter adresse.' <<endl<<endl;
mySwap(&var_1,&var_2);

koste << 'Efter at have kaldt til funktionen mySwap (), værdi af var_1:' <<var_1<<endl;
koste << 'Efter at have kaldt til funktionen mySwap (), værdien af ​​var_2:' <<var_2<<endl;

Vend tilbage 0;
}

Eksempel-3-Opkald efter reference (1)

I dette eksempel vil vi demonstrere, hvordan call by reference fungerer i C ++. I funktionsdefinitionen hej () modtages værdien som en referencevariabel (& p). Ved hjælp af referencevariablen (dvs. p) er vi i stand til at ændre værdien af ​​den faktiske parameter (var) inde i hovedfunktionen ().

#omfatte
ved brug af navnerumtimer;

ugyldigHej(int &s. s)
{
koste <<endl<< 'Inside hello () funktion:' <<endl;
koste << 'Værdi af p =' <<s. s<<endl;
s. s= 200;
koste << 'Værdi af p =' <<s. s<<endl;
koste << 'Afslutter hej () funktion.' <<endl;
}

intvigtigste()
{
inthvor= 100;
koste << 'Værdi af var inde main () funktion =' <<hvor<<endl;

Hej(hvor);

koste <<endl<< 'Værdi af var inde main () funktion =' <<hvor<<endl;

Vend tilbage 0;
}

Eksempel-4-Opkald efter reference (2)

Dette er et andet eksempel på et opkald som reference. I dette eksempel vil vi demonstrere, hvordan call by reference fungerer i C ++ ved hjælp af et eksempel fra den virkelige verden. Funktionen mySwap () kaldes fra hovedfunktionen () med følgende parametre - var_1 og var_2. Inde i funktionen mySwap () modtager vi parametrene som referencevariabler.

#omfatte
ved brug af navnerumtimer;

ugyldigmySwap(int &vref_1,int &vref_2)
{
inttemp_var;
temp_var=vref_1;
vref_1=vref_2;
vref_2=temp_var;
}

intvigtigste()
{
intvar_1= 100;
intvar_2= 300;

koste << 'Før du kalder funktionen mySwap (), værdien af ​​var_1:' <<var_1<<endl;
koste << 'Inden du kalder funktionen mySwap (), værdien af ​​var_2:' <<var_2<<endl<<endl;

koste << 'Calling mySwap () funktion - Ring efter reference.' <<endl<<endl;
mySwap(var_1, var_2);

koste << 'Efter at have kaldt til funktionen mySwap (), værdi af var_1:' <<var_1<<endl;
koste << 'Efter at have kaldt til funktionen mySwap (), værdien af ​​var_2:' <<var_2<<endl;

Vend tilbage 0;
}

Konklusion

Forståelse af parameteren, der sender metoder ind C ++ er meget afgørende. Programmeringssproget C understøtter kun opkald efter værdi og opkald efter adresse. Men C ++ understøtter Call ved reference sammen med de to foregående mekanismer. I denne artikel har vi set flere arbejdseksempler for at forstå begrebet Call by address og Call by reference. Opkald efter adresse er en meget kraftfuld og populær metode i integrerede domæneapplikationer.