C ++ Pokliči po naslovu in Pokliči po referenci

C Call Address



C ++ je prilagodljiv programski jezik za splošno uporabo. Prvotno ga je ustvaril Bjarne Stroustrup, danski računalničar, leta 1985. C ++ podpira tripreparacijske metode prenosa, to je klic po vrednosti, klic po naslovu in klic po referenci. V tem članku bomo obravnavali klic po naslovu in klic po referenčnem mehanizmu.

Kaj je funkcija?

Preden preidemo na dejansko temo, moramo razumeti, kakšna je funkcija v C ++. Mnogi od vas morda že poznajo funkcije.







Funkcija je v bistvu del kode, ki jo lahko uporabite za izvajanje določene naloge. Funkcija se uporablja predvsem za zmanjšanje ponavljajoče se kode v programu C ++. Za parametre vzame vhod, izhod pa vrne kot vrnjeno vrednost. Če funkcijo definiramo enkrat, jo lahko v poznejšem delu programa večkrat pokličemo/uporabimo. Na ta način prihranimo veliko ponavljajoče se kode v programu.



Vsak program za C ++ mora imeti funkcijo main (). Funkcija main () je vstopna točka za program C ++. Programer lahko poleg funkcije main () definira toliko funkcij, kot jih želi.



Tukaj je sintaksa opredelitve funkcije:





Vrni_vrsta Ime_funkcije(Seznam vhodnih parametrov)

Funkcija v C ++ lahko sprejme 0 ali več število vhodnih parametrov, medtem ko lahko vrne samo eno vrnjeno vrednost.

Kaj je naslov?

V C ++ obstajata dve vrsti spremenljivk (podobno kot jezik C) - spremenljivka podatkov in spremenljivka naslova. Spremenljivka naslova se uporablja za shranjevanje naslova druge podatkovne spremenljivke. Na primer, razmislimo o naslednjem delčku kode:



intjaz= 100;
int *ptr= &jaz;

Tu nam prvi stavek pove, da je spremenljivka i podatkovna spremenljivka in shranjuje vrednost 100. V drugem stavku razglasimo spremenljivko kazalca, to je ptr, in jo inicializiramo z naslovom spremenljivke i.

Kaj je referenca?

Sklic je še ena močna lastnost jezika C ++. Razmislimo o naslednjem kodu kode:

intdo= 200;
int &r=do;

V tem primeru smo deklarirali celo število, to je a in nato deklarirali referenčno spremenljivko r, ki se inicializira z vrednostjo a. Referenčna spremenljivka torej ni nič drugega kot vzdevek druge spremenljivke.

Metode podajanja parametrov:

V jeziku C ++ obstajajo tri vrste metod podajanja parametrov:

  1. Pokliči po vrednosti / Prenesi po vrednosti
  2. Kličite po naslovu / Prenesite po naslovu
  3. Pokličite po referenci / Prenesite po sklicu

V tem članku razpravljamo o - Pokliči po naslovu in Pokliči po sklicih.

Kaj je klic po naslovu / prehod po naslovu?

V primeru klica po naslovu / posreduj po naslovu se argumenti funkcije posredujejo kot naslov. Funkcija klicatelja posreduje naslov parametrov. Kazalne spremenljivke se uporabljajo pri opredelitvi funkcije. S pomočjo metode Pokliči po naslovu lahko funkcija dostopa do dejanskih parametrov in jih spreminja. Primer metode »Pokliči po naslovu« bomo videli v nadaljevanju tega članka.

Kaj je Call By Reference / Pass by reference?

V metodi Pokliči po sklicu / Prenesi po referenci se parametri funkcije posredujejo kot referenca. Znotraj definicije funkcije do dejanskih parametrov dostopamo z referenčno spremenljivko.

Primeri:

Zdaj, ko razumemo koncept metod podajanja parametrov, bomo videli več zglednih programov za razumevanje mehanizma podajanja parametrov v C ++:

  1. Primer-1-Pokličite po naslovu (1)
  2. Primer 2-Pokliči po naslovu (2)
  3. Primer 3-Pokličite po referenci (1)
  4. Primer 4-Pokliči po referenci (2)

Prva dva primera sta podana, da bi pojasnili, kako metoda Call by address deluje v C ++. Zadnja dva primera razlagata razpis z referenčnim konceptom.

Primer-1-Pokličite po naslovu (1)

V tem primeru bomo prikazali mehanizem klica po naslovu. Iz funkcije main () kličemo funkcijo hello () in posredujemo naslov var. V definiciji funkcije prejemamo naslov var v spremenljivki kazalca, to je p. V funkciji hello se vrednost var s pomočjo kazalca spremeni na 200. Zato se vrednost var spreminja na 200 znotraj funkcije main () po klicu funkcije hello ().

#vključi
z uporabo imenski prostorure;

ničnozdravo(int *str)
{
stroški <<endl<< 'Funkcija znotraj hello ():' <<endl;
stroški << 'Vrednost *p =' << *str<<endl;
*str= 200;
stroški << 'Vrednost *p =' << *str<<endl;
stroški << 'Izhod iz funkcije hello ().' <<endl;
}

intglavni()
{
intkje= 100;
stroški << 'Vrednost var znotraj main () function =' <<kje<<endl;

zdravo(&kje);

stroški <<endl<< 'Vrednost var znotraj main () function =' <<kje<<endl;

vrnitev 0;
}

Primer 2-Pokliči po naslovu (2)

To je še en primer klica po naslovu. V tem primeru bomo razložili, kako lahko metodo klica po naslovu rešimo resničnega problema. Na primer, želimo napisati funkcijo za zamenjavo dveh spremenljivk. Če za zamenjavo dveh spremenljivk uporabimo mehanizem klic po vrednosti, se dejanske spremenljivke v funkciji klicatelja ne zamenjajo. V takem scenariju se lahko uporabi metoda klica po naslovu. V tem primeru posredujemo naslove var_1 (& var_1) in var_2 (& var_2) funkciji mySwap (). Znotraj funkcije mySwap () s pomočjo kazalcev zamenjamo vrednosti teh dveh spremenljivk. Kot lahko vidite na spodnjem izhodu, se dejanska vrednost teh spremenljivk po izvedbi funkcije mySwap () zamenja v funkciji main ().

#vključi
z uporabo imenski prostorure;

ničnomySwap(int *vptr_1,int *vptr_2)
{
inttemp_var;
temp_var= *vptr_1;
*vptr_1= *vptr_2;
*vptr_2=temp_var;
}

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

stroški << 'Pred klicem funkcije mySwap (), vrednost var_1:' <<var_1<<endl;
stroški << 'Pred klicem funkcije mySwap (), vrednost var_2:' <<var_2<<endl<<endl;

stroški << 'Klicanje funkcije mySwap () - klicanje po naslovu.' <<endl<<endl;
mySwap(&var_1,&var_2);

stroški << 'Po klicu funkcije mySwap (), vrednost var_1:' <<var_1<<endl;
stroški << 'Po klicu funkcije mySwap () je vrednost var_2:' <<var_2<<endl;

vrnitev 0;
}

Primer 3-Pokličite po referenci (1)

V tem primeru bomo pokazali, kako klic po referenci deluje v C ++. V definiciji funkcije hello () se vrednost sprejema kot referenčna spremenljivka (& p). S pomočjo referenčne spremenljivke (tj. P) lahko spremenimo vrednost dejanskega parametra (var) znotraj funkcije main ().

#vključi
z uporabo imenski prostorure;

ničnozdravo(int &str)
{
stroški <<endl<< 'Funkcija znotraj hello ():' <<endl;
stroški << 'Vrednost p =' <<str<<endl;
str= 200;
stroški << 'Vrednost p =' <<str<<endl;
stroški << 'Izhod iz funkcije hello ().' <<endl;
}

intglavni()
{
intkje= 100;
stroški << 'Vrednost var znotraj main () function =' <<kje<<endl;

zdravo(kje);

stroški <<endl<< 'Vrednost var znotraj main () function =' <<kje<<endl;

vrnitev 0;
}

Primer 4-Pokliči po referenci (2)

To je še en primer klica po sklicu. V tem primeru bomo s pomočjo primera iz resničnega sveta pokazali, kako klic po referenci deluje v C ++. Funkcija mySwap () se pokliče iz funkcije main () z naslednjimi parametri - var_1 in var_2. Znotraj funkcije mySwap () parametre prejemamo kot referenčne spremenljivke.

#vključi
z uporabo imenski prostorure;

ničnomySwap(int &vref_1,int &vref_2)
{
inttemp_var;
temp_var=vref_1;
vref_1=vref_2;
vref_2=temp_var;
}

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

stroški << 'Pred klicem funkcije mySwap (), vrednost var_1:' <<var_1<<endl;
stroški << 'Pred klicem funkcije mySwap (), vrednost var_2:' <<var_2<<endl<<endl;

stroški << 'Klicanje funkcije mySwap () - klic po sklicih.' <<endl<<endl;
mySwap(var_1, var_2);

stroški << 'Po klicu funkcije mySwap (), vrednost var_1:' <<var_1<<endl;
stroški << 'Po klicu funkcije mySwap () je vrednost var_2:' <<var_2<<endl;

vrnitev 0;
}

Zaključek

Razumevanje metod podajanja parametrov v C ++ je zelo ključnega pomena. Programski jezik C podpira klic po vrednosti in klic samo po naslovu. Toda C ++ podpira Call z referenco skupaj s prejšnjima dvema mehanizmoma. V tem članku smo videli več delovnih primerov za razumevanje pojma Klic po naslovu in Klic po sklicih. Klicanje po naslovu je zelo močna in priljubljena metoda v aplikacijah vdelanih domen.