C ++ Ring etter adresse og ring ved referanse

C ++ Ring etter adresse og ring ved referanse
C ++ er et fleksibelt programmeringsspråk for generell formål. Det ble opprinnelig opprettet av Bjarne Stroustrup, en dansk dataforsker, tilbake i 1985. C ++ støtter passeringsmetoder med tre parameter, i.e., Ring etter verdi, ring etter adresse og ring etter referanse. I denne artikkelen skal vi diskutere om samtale etter adresse og samtale ved referansemekanisme.

Hva er en funksjon?

Før vi hopper inn i selve 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 viss oppgave. En funksjon brukes hovedsakelig til å redusere den repeterende koden i et C ++ -program. Det tar innspill som parametere og returnerer utdataene som en returverdi. Hvis vi definerer funksjonen en gang, kan vi ringe/bruke den flere ganger i den senere delen av programmet vårt. På den måten lagrer vi mye repeterende kode i programmet.

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

Her er syntaks for å definere en funksjon:

Return_type funksjon_name (input parameter liste)

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

Hva er adresse?

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

int i = 100;
int *ptr = & i;

Her forteller den første uttalelsen oss at variabelen "i" er en datavariabel, og at den lagrer verdien 100. I den andre uttalelsen erklærer vi en pekervariabel, jeg.e. “PTR,” og initialisere den med adressen til variabelen “Jeg”.

Hva er referanse?

Referansen er et annet kraftig trekk ved C ++ språk. La oss vurdere følgende kodebit:

int a = 200;
int & r = a;

I dette eksemplet har vi erklært et heltall, jeg.e. “A” og erklærte deretter en referansevariabel “R”, som initialiseres med verdien av “A”. Så referansevariabelen er ingenting annet enn et alias av en annen variabel.

Parameterens passeringsmetoder:

Det er tre typer parameterens passeringsmetoder på C ++ språk:

  1. Ring etter verdi / pass etter verdi
  2. Ring med adresse / pass på adresse
  3. Ring ved referanse / pass ved referanse

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

Hva er samtale med adresse / passerer etter adresse?

Når det. Innringeren -funksjonen passerer adressen til parametrene. Pekervariabler brukes i funksjonsdefinisjonen. Ved hjelp av samtalen etter adressemetode kan funksjonen få tilgang til de faktiske parametrene og endre dem. Vi vil se et eksempel på samtalen etter adressemetode senere del av denne artikkelen.

Hva kalles referanse / pass ved referanse?

I samtalen ved referanse / passering av referansemetode sendes funksjonsparametrene som en referanse. Inne i funksjonsdefinisjonen får de faktiske parametrene tilgang til ved hjelp av referansevariabelen.

Eksempler:

Nå, siden vi forstår konseptet med parameterens passeringsmetoder, vil vi se flere eksempelprogrammer for å forstå parameterens passeringsmekanisme i C ++:

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

De to første eksemplene blir gitt for å forklare hvordan samtalen etter adressemetoden fungerer i C++. De to siste eksemplene er å forklare samtalen ved referansekonsept.

Eksempel -1 - Ring etter adresse (1)

I dette eksemplet skal vi demonstrere samtalen etter adressemekanisme. Fra "Main ()" -funksjonen kaller vi "Hello ()" -funksjonen og passerer adressen til "var". I funksjonsdefinisjonen mottar vi adressen til “var” i en pekervariabel, i.e., “P”. Inne i funksjonen Hei, blir verdien av "VAR" endret til 200 ved hjelp av pekeren. Derfor blir verdien av "VAR" endret til 200 innenfor "Main ()" -funksjonen etter "Hello ()" -funksjonen.

#inkludere
ved hjelp av navneområdet STD;
void hei (int *p)

cout << endl << "Inside hello() function : " << endl;
cout << "Value of *p = " << *p << endl;
*p = 200;
cout << "Value of *p = " << *p << endl;
cout << "Exiting hello() function." << endl;

int main ()

int var = 100;
cout << "Value of var inside main() function = " << var << endl;
hei (& var);
cout << endl << "Value of var inside main() function = " << var << endl;
retur 0;

Eksempel -2 - Ring etter adresse (2)

Dette er et annet eksempel på samtalen etter adressemetode. I dette eksemplet skal vi forklare hvordan samtalen etter adressemetode kan brukes til å løse et virkelighetsproblem. For eksempel ønsker vi å skrive en funksjon for å bytte to variabler. Hvis vi bruker samtalen etter verdimekanisme for å bytte to variabler, blir ikke de faktiske variablene byttet i anropsfunksjonen. Ring etter adressemetode 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 “Myswap ()” -funksjon. Inne i "Myswap ()" -funksjonen bytter vi verdiene til disse to variablene ved hjelp av pekerne. Som du kan se i utdataene nedenfor, blir den faktiske verdien av disse variablene byttet i "Main ()" -funksjonen etter at "Myswap ()" -funksjonen er utført.

#inkludere
ved hjelp av navneområdet STD;
void myswap (int *vptr_1, int *vptr_2)

int temp_var;
temp_var = *vptr_1;
*VPTR_1 = *VPTR_2;
*vptr_2 = temp_var;

int main ()

int var_1 = 100;
int var_2 = 300;
cout << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "Before calling mySwap() function, value of var_2 : " << var_2 << endl;
cout << "Calling mySwap() function - Call by address." << endl;
Myswap (& var_1, & var_2);
cout << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
retur 0;

Eksempel -3 - Ring ved referanse (1)

I dette eksemplet skal vi demonstrere hvordan samtale ved referanse fungerer i C++. I "Hello ()" -funksjonsdefinisjonen blir verdien mottatt som en referansevariabel (& p). Ved hjelp av referansevariabelen (i.e., p), vi er i stand til å endre verdien av den faktiske parameteren (var) inne i "Main ()" -funksjonen.

#inkludere
ved hjelp av navneområdet STD;
ugyldig hei (int & p)

cout << endl << "Inside hello() function : " << endl;
cout << "Value of p = " << p << endl;
p = 200;
cout << "Value of p = " << p << endl;
cout << "Exiting hello() function." << endl;

int main ()

int var = 100;
cout << "Value of var inside main() function = " << var << endl;
hei (var);
cout << endl << "Value of var inside main() function = " << var << endl;
retur 0;

Eksempel -4 - Ring ved referanse (2)

Dette er et annet eksempel på en samtale som referanse. I dette eksemplet skal vi demonstrere hvordan samtale ved referanse fungerer i C ++ ved hjelp av et virkelighetseksempel. "Myswap ()" -funksjonen kalles fra "Main ()" -funksjonen med følgende parametere - var_1 og var_2. Inne i "Myswap ()" -funksjonen mottar vi parametrene som referansevariabler.

#inkludere
ved hjelp av navneområdet STD;
void MySWAP (int & vref_1, int & vref_2)

int temp_var;
temp_var = vref_1;
vref_1 = vref_2;
vref_2 = temp_var;

int main ()

int var_1 = 100;
int var_2 = 300;
cout << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "Before calling mySwap() function, value of var_2 : " << var_2 << endl;
cout << "Calling mySwap() function - Call by reference." << endl;
Myswap (var_1, var_2);
cout << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
retur 0;

Konklusjon

Å forstå parameterens passeringsmetoder i C ++ er veldig avgjørende. C -programmeringsspråket støtter bare samtalen etter verdi og samtale etter adresse. Men C ++ støtter samtale som referanse sammen med de to foregående mekanismene. I denne artikkelen har vi sett flere arbeidseksempler for å forstå oppfordringsbegrepet med adresse og ringe med referanse. Ring etter adresse er en veldig kraftig og populær metode i innebygde domeneapplikasjoner.