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:
- Ring etter verdi / Pass etter verdi
- Ring etter adresse / Pass etter adresse
- 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 ++:
- Eksempel-1-Ring etter adresse (1)
- Eksempel-2-Ring etter adresse (2)
- Eksempel-3-Ring etter referanse (1)
- 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.
#inkludereved 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.
#inkludereved 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 ().
#inkludereved 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.
#inkludereved 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.