C ++ Ring etter adresse og Ring etter referanse

C Call Address



C ++ er et fleksibelt programmeringsspråk for generelle formål. Det ble opprinnelig opprettet av Bjarne Stroustrup, en dansk datavitenskapsmann, tilbake i 1985. C ++ støtter tre-parameter-passeringsmetoder, det vil si ring etter verdi, ring etter adresse og ring ved referanse. I denne artikkelen skal vi diskutere om anrop etter adresse og anrop etter referansemekanisme.

Hva er en funksjon?

Før vi hopper inn i det faktiske emnet, må vi forstå hva funksjonen er i C ++. Mange av dere er kanskje allerede kjent med funksjoner.







En funksjon er i utgangspunktet et stykke kode som kan brukes til å utføre en bestemt oppgave. En funksjon brukes hovedsakelig for å redusere repeterende kode i et C ++ - program. Den tar input som parametere og returnerer utgangen som en returverdi. Hvis vi definerer funksjonen en gang, kan vi ringe/bruke den flere ganger i den senere delen av programmet. På den måten sparer vi mye repeterende kode i programmet.



Hvert C ++ - program skal ha hovedfunksjonen (). Hovedfunksjonen () er inngangspunktet for et C ++ - program. Bortsett fra hovedfunksjonen (), kan programmereren definere så mange funksjoner de vil.



Her er syntaksen for å definere en funksjon:





Return_type Function_Name(Inngangsparameter Liste)

Funksjon i C ++ kan godta 0 eller flere antall inngangsparametere, mens den bare kan returnere én returverdi.

Hva er adresse?

Det er to typer variabler i C ++ (ligner C -språk) - Datavariabel og Adressevariabel. Adressevariabelen brukes til å lagre adressen til en annen datavariabel. La oss for eksempel vurdere følgende kodebit:



intJeg= 100;
int *ptr= &Jeg;

Her forteller den første setningen oss at variabelen i er en datavariabel, og den lagrer verdien 100. I den andre setningen deklarerer vi en pekervariabel, dvs. ptr, og initialiserer den med adressen til variabelen i.

Hva er referanse?

Referansen er en annen kraftig funksjon i C ++ - språk. La oss vurdere følgende kodebit:

inttil= 200;
int &r=til;

I dette eksemplet har vi deklarert et heltall, dvs. a og deretter deklarert en referansevariabel r, som initialiseres med verdien av a. Så referansevariabelen er ikke annet enn et alias for en annen variabel.

Parameter bestått metoder:

Det er tre typer parameteroverføringsmetoder på C ++ - språk:

  1. Ring etter verdi / Pass etter verdi
  2. Ring etter adresse / Pass etter adresse
  3. Ring etter referanse / Pass ved referanse

I denne artikkelen diskuterer vi om - Ring etter adresse og Ring etter referanse.

Hva er Call By Address / Pass by address?

Når det gjelder metoden Call by address / Pass by address, sendes funksjonsargumentene som adresse. Den som ringer, sender adressen til parameterne. Pekervariabler brukes i funksjonsdefinisjonen. Ved hjelp av Call by address -metoden kan funksjonen få tilgang til de faktiske parameterne og endre dem. Vi vil se et eksempel på Call by address -metoden senere i denne artikkelen.

Hva er Call By Reference / Pass by reference?

I Call by reference / Pass by reference -metoden sendes funksjonsparametrene som en referanse. Inne i funksjonsdefinisjonen får du tilgang til de faktiske parameterne ved hjelp av referansevariabelen.

Eksempler:

Nå, siden vi forstår begrepet parameteroverføringsmetoder, vil vi se flere eksempler på programmer for å forstå parameterpasseringsmekanismen i C ++:

  1. Eksempel-1-Ring etter adresse (1)
  2. Eksempel-2-Ring etter adresse (2)
  3. Eksempel-3-Ring etter referanse (1)
  4. Eksempel-4-Ring etter referanse (2)

De to første eksemplene er gitt for å forklare hvordan Call by address -metoden fungerer i C ++. De to siste eksemplene er å forklare Call by reference -konseptet.

Eksempel-1-Ring etter adresse (1)

I dette eksemplet skal vi demonstrere anropsmodus. Fra hovedfunksjonen () kaller vi hello () -funksjonen og sender adressen til var. I funksjonsdefinisjonen mottar vi adressen til var i en pekervariabel, dvs. s. Inne i funksjonen hei blir verdien av var endret til 200 ved hjelp av pekeren. Derfor blir verdien av var endret til 200 inne i hovedfunksjonen () etter hello () -funksjonen.

#inkludere
ved hjelp av navneområdetimer;

tomromHallo(int *s)
{
koste <<endl<< 'Inside hello () -funksjon:' <<endl;
koste << 'Verdi av *p =' << *s<<endl;
*s= 200;
koste << 'Verdi av *p =' << *s<<endl;
koste << 'Avslutter hallo () -funksjonen.' <<endl;
}

inthoved-()
{
inthvor= 100;
koste << 'Verdi av var inne main () funksjon =' <<hvor<<endl;

Hallo(&hvor);

koste <<endl<< 'Verdi av var inne main () funksjon =' <<hvor<<endl;

komme tilbake 0;
}

Eksempel-2-Ring etter adresse (2)

Dette er et annet eksempel på metoden for anrop etter adresse. I dette eksemplet skal vi forklare hvordan samtalen etter adresse-metoden kan brukes til å løse et problem i virkeligheten. For eksempel vil vi skrive en funksjon for å bytte to variabler. Hvis vi bruker call -by -value -mekanismen til å bytte to variabler, blir de faktiske variablene ikke byttet ut i innringerfunksjonen. Anrop etter adresse -metoden kan brukes i et slikt scenario. I dette eksemplet sender vi adressen til både var_1 (& var_1) og var_2 (& var_2) til funksjonen mySwap (). Inne i mySwap () -funksjonen bytter vi verdiene til disse to variablene ved hjelp av pekene. Som du kan se i utgangen nedenfor, blir den faktiske verdien av disse variablene byttet i hovedfunksjonen () etter at mySwap () -funksjonen er utført.

#inkludere
ved hjelp av navneområdetimer;

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

inthoved-()
{
intvar_1= 100;
intvar_2= 300;

koste << 'Før du ringer til mySwap () -funksjonen, verdien av var_1:' <<var_1<<endl;
koste << 'Før du ringer til mySwap () -funksjonen, verdien av var_2:' <<var_2<<endl<<endl;

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

koste << 'Etter å ha ringt til mySwap () -funksjonen, verdien av var_1:' <<var_1<<endl;
koste << 'Etter å ha ringt til mySwap () -funksjonen, verdien av var_2:' <<var_2<<endl;

komme tilbake 0;
}

Eksempel-3-Ring etter referanse (1)

I dette eksemplet skal vi demonstrere hvordan call by reference fungerer i C ++. I definisjonen for hallo () mottas verdien som en referansevariabel (& p). Ved hjelp av referansevariabelen (dvs. p) kan vi endre verdien av den faktiske parameteren (var) inne i hovedfunksjonen ().

#inkludere
ved hjelp av navneområdetimer;

tomromHallo(int &s)
{
koste <<endl<< 'Inside hello () -funksjon:' <<endl;
koste << 'Verdi av p =' <<s<<endl;
s= 200;
koste << 'Verdi av p =' <<s<<endl;
koste << 'Avslutter hallo () -funksjonen.' <<endl;
}

inthoved-()
{
inthvor= 100;
koste << 'Verdi av var inne main () funksjon =' <<hvor<<endl;

Hallo(hvor);

koste <<endl<< 'Verdi av var inne main () funksjon =' <<hvor<<endl;

komme tilbake 0;
}

Eksempel-4-Ring etter referanse (2)

Dette er et annet eksempel på et anrop som referanse. I dette eksemplet skal vi demonstrere hvordan call by reference fungerer i C ++ ved hjelp av et eksempel fra den virkelige verden. MySwap () -funksjonen kalles fra hovedfunksjonen () med følgende parametere - var_1 og var_2. Inne i mySwap () -funksjonen mottar vi parameterne som referansevariabler.

#inkludere
ved hjelp av navneområdetimer;

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

inthoved-()
{
intvar_1= 100;
intvar_2= 300;

koste << 'Før du ringer til mySwap () -funksjonen, verdien av var_1:' <<var_1<<endl;
koste << 'Før du ringer til mySwap () -funksjonen, verdien av var_2:' <<var_2<<endl<<endl;

koste << 'Calling mySwap () -funksjon - Ring etter referanse.' <<endl<<endl;
mySwap(var_1, var_2);

koste << 'Etter å ha ringt til mySwap () -funksjonen, verdien av var_1:' <<var_1<<endl;
koste << 'Etter å ha ringt til mySwap () -funksjonen, verdien av var_2:' <<var_2<<endl;

komme tilbake 0;
}

Konklusjon

Forstå parameteren som sender metoder inn C ++ er veldig avgjørende. Programmeringsspråket C støtter kun anrop etter verdi og anrop etter adresse. Men C ++ støtter Call ved referanse sammen med de to foregående mekanismene. I denne artikkelen har vi sett flere eksempler på arbeid for å forstå begrepet Ring etter adresse og Ring etter referanse. Anrop etter adresse er en veldig kraftig og populær metode i innebygde domeneapplikasjoner.