C ++ Puhelu osoitteen ja puhelun perusteella

C Call Address



C ++ on joustava yleiskäyttöinen ohjelmointikieli. Sen on alun perin luonut Bjarne Stroustrup, tanskalainen tietojenkäsittelytieteilijä, vuonna 1985. C ++ tukee kolmen parametrin välitysmenetelmiä, so. arvon mukaan, puhelun osoitteen mukaan ja puhelun viittauksen perusteella. Tässä artikkelissa aiomme keskustella puhelun osoitteesta ja puhelun viitemekanismista.

Mikä on funktio?

Ennen kuin siirrymme varsinaiseen aiheeseen, meidän on ymmärrettävä, mikä toiminto on C ++: ssa. Monet teistä saattavat jo tuntea toiminnot.







Funktio on pohjimmiltaan koodi, jota voidaan käyttää tietyn tehtävän suorittamiseen. Toimintoa käytetään pääasiassa toistuvan koodin vähentämiseen C ++ -ohjelmassa. Se ottaa syötteen parametreiksi ja palauttaa tuloksen palautusarvona. Jos määritämme funktion kerran, voimme kutsua/käyttää sitä useita kertoja ohjelman myöhemmässä osassa. Tällä tavalla tallennamme ohjelmaan paljon toistuvaa koodia.



Jokaisella C ++ -ohjelmalla on oltava päätoiminto (). Päätoiminto () on C ++ -ohjelman aloituspiste. Päätoiminnon () lisäksi ohjelmoija voi määrittää niin monta toimintoa kuin haluaa.



Tässä on funktion määrittelyn syntaksi:





Return_type Function_Name(Syöttöparametriluettelo)

Toiminto C ++: ssa voi hyväksyä 0 tai useampia syöttöparametreja, kun taas se voi palauttaa vain yhden paluuarvon.

Mikä on Osoite?

C ++: ssa on kahdenlaisia ​​muuttujia (samanlainen kuin C -kieli) - tietomuuttuja ja osoitemuuttuja. Osoitemuuttujaa käytetään toisen datamuuttujan osoitteen tallentamiseen. Tarkastellaan esimerkiksi seuraavaa koodinpätkää:



inti= 100;
int *ptr= &i;

Tässä ensimmäinen lause kertoo meille, että muuttuja i on datamuuttuja ja se tallentaa arvon 100. Toisessa lausunnossa ilmoitamme osoitinmuuttujan, eli ptr, ja alustamme sen muuttujan i osoitteella.

Mikä on viite?

Viite on toinen tehokas C ++ -kielen ominaisuus. Tarkastellaan seuraavaa koodinpätkää:

intkohteeseen= 200;
int &r=kohteeseen;

Tässä esimerkissä olemme ilmoittaneet kokonaisluvun, ts. Viittausmuuttuja ei siis ole muuta kuin toisen muuttujan alias.

Parametrien siirtomenetelmät:

C ++ -kielellä on kolmenlaisia ​​parametrien välitysmenetelmiä:

  1. Soita arvon mukaan / Ohita arvon mukaan
  2. Soita osoitteesta / Ohita osoitteesta
  3. Soita viitteellä / Ohita viittauksella

Tässä artikkelissa keskustelemme - Soita osoitteesta ja Soita viitteellä.

Mikä on puhelu osoitteella / pass by address?

Jos kyseessä on Soita osoitteella / Ohita osoitteella -menetelmä, funktion argumentit välitetään osoitteena. Soitintoiminto välittää parametrien osoitteen. Osoitinmuuttujia käytetään funktion määrittelyssä. Call by address -menetelmän avulla toiminto voi käyttää todellisia parametreja ja muokata niitä. Näemme esimerkin Soita osoitteella -menetelmästä tämän artikkelin myöhemmässä osassa.

Mikä on Call by Reference / Pass by reference?

Call by reference / Pass by reference -menetelmässä toimintoparametrit välitetään viitteenä. Funktion määritelmän sisällä todellisiin parametreihin päästään viitemuuttujan avulla.

Esimerkkejä:

Nyt kun ymmärrämme parametrien välitysmenetelmien käsitteen, näemme useita esimerkkiohjelmia parametrien välitysmekanismin ymmärtämiseksi C ++: ssa:

  1. Esimerkki 1-Soita osoitteen mukaan (1)
  2. Esimerkki 2-Soita osoitteen mukaan (2)
  3. Esimerkki 3-Puhelu viitteellä (1)
  4. Esimerkki 4-Puhelu viitteellä (2)

Kaksi ensimmäistä esimerkkiä selittävät, kuinka Call by Address -menetelmä toimii C ++: ssa. Kaksi viimeistä esimerkkiä selittävät kutsun viitteellä.

Esimerkki 1-Soita osoitteen mukaan (1)

Tässä esimerkissä aiomme osoittaa puhelun osoitteen mukaan. Main () -funktiosta kutsumme hello () -funktiota ja välitämme var -osoitteen. Funktion määritelmässä vastaanotamme osoitteen muuttujan var -osoitteen, eli p. Funktion hei sisällä var -arvon arvo muutetaan arvoon 200 osoittimen avulla. Siksi var -arvon arvo muuttuu arvoon 200 pää () -funktion sisällä hello () -toiminnon kutsun jälkeen.

#sisältää
käyttämällä nimiavaruustuntia;

mitätönHei(int *s)
{
kustannus <<endl<< 'Inside hello () -toiminto:' <<endl;
kustannus << 'Arvo *p =' << *s<<endl;
*s= 200;
kustannus << 'Arvo *p =' << *s<<endl;
kustannus << 'Hei () -toiminnosta poistuminen.' <<endl;
}

inttärkein()
{
intmissä= 100;
kustannus << 'Var -arvo main () -funktion sisällä =' <<missä<<endl;

Hei(&missä);

kustannus <<endl<< 'Var -arvo main () -funktion sisällä =' <<missä<<endl;

palata 0;
}

Esimerkki 2-Soita osoitteen mukaan (2)

Tämä on toinen esimerkki puhelun osoitteesta -menetelmästä. Tässä esimerkissä aiomme selittää, kuinka puhelu osoitteella -menetelmää voidaan käyttää tosielämän ongelman ratkaisemiseen. Haluamme esimerkiksi kirjoittaa funktion kahden muuttujan vaihtamiseksi. Jos käytämme call by value -mekanismia kahden muuttujan vaihtamiseen, todellisia muuttujia ei vaihdeta soittajan toiminnossa. Tällaisessa tilanteessa voidaan käyttää puhelu osoitteella -menetelmää. Tässä esimerkissä välitämme sekä var_1 (& var_1) että var_2 (& var_2) osoitteen mySwap () -funktiolle. MySwap () -funktion sisällä vaihdamme näiden kahden muuttujan arvoja osoittimien avulla. Kuten alla olevasta tulostuksesta näkyy, näiden muuttujien todellinen arvo vaihdetaan päätoiminnossa () funktion jälkeen mySwap ().

#sisältää
käyttämällä nimiavaruustuntia;

mitätönmySwap(int *vptr_1,int *vptr_2)
{
inttemp_var;
temp_var= *vptr_1;
*vptr_1= *vptr_2;
*vptr_2=temp_var;
}

inttärkein()
{
intvar_1= 100;
intvar_2= 300;

kustannus << 'Ennen mySwap () -funktion kutsumista arvo var_1:' <<var_1<<endl;
kustannus << 'Ennen mySwap () -funktion kutsumista arvo var_2:' <<var_2<<endl<<endl;

kustannus << 'Soittaminen mySwap () -toimintoon - soita osoitteen mukaan.' <<endl<<endl;
mySwap(&var_1,&var_2);

kustannus << 'Kun olet kutsunut mySwap () -funktion, arvo var_1:' <<var_1<<endl;
kustannus << 'Kun olet kutsunut mySwap () -funktion, arvo var_2:' <<var_2<<endl;

palata 0;
}

Esimerkki 3-Puhelu viitteellä (1)

Tässä esimerkissä aiomme osoittaa, kuinka viittauspuhelu toimii C ++: ssa. Funktion hello () määritelmässä arvo vastaanotetaan viitemuuttujana (& p). Vertailumuuttujan (eli p) avulla voimme muuttaa varsinaisen parametrin (var) arvoa pääfunktion sisällä.

#sisältää
käyttämällä nimiavaruustuntia;

mitätönHei(int &s)
{
kustannus <<endl<< 'Inside hello () -toiminto:' <<endl;
kustannus << 'Arvo p =' <<s<<endl;
s= 200;
kustannus << 'Arvo p =' <<s<<endl;
kustannus << 'Hei () -toiminnosta poistuminen.' <<endl;
}

inttärkein()
{
intmissä= 100;
kustannus << 'Var -arvo main () -funktion sisällä =' <<missä<<endl;

Hei(missä);

kustannus <<endl<< 'Var -arvo main () -funktion sisällä =' <<missä<<endl;

palata 0;
}

Esimerkki 4-Puhelu viitteellä (2)

Tämä on toinen esimerkki viittaavasta puhelusta. Tässä esimerkissä aiomme osoittaa, kuinka kutsu viitteellä toimii C ++: ssa reaalimaailman esimerkin avulla. Funktio mySwap () kutsutaan pääfunktiosta () seuraavilla parametreilla - var_1 ja var_2. Funktion mySwap () sisällä vastaanotamme parametrit viitemuuttujina.

#sisältää
käyttämällä nimiavaruustuntia;

mitätönmySwap(int &vref_1,int &vref_2)
{
inttemp_var;
temp_var=vref_1;
vref_1=vref_2;
vref_2=temp_var;
}

inttärkein()
{
intvar_1= 100;
intvar_2= 300;

kustannus << 'Ennen mySwap () -funktion kutsumista arvo var_1:' <<var_1<<endl;
kustannus << 'Ennen mySwap () -funktion kutsumista arvo var_2:' <<var_2<<endl<<endl;

kustannus << 'MySwap () -toiminnon kutsuminen - soita viitteellä.' <<endl<<endl;
mySwap(var_1, var_2);

kustannus << 'Kun olet kutsunut mySwap () -funktion, arvo var_1:' <<var_1<<endl;
kustannus << 'Kun olet kutsunut mySwap () -funktion, arvo var_2:' <<var_2<<endl;

palata 0;
}

Johtopäätös

Parametrien siirtomenetelmien ymmärtäminen C ++ on erittäin ratkaiseva. C -ohjelmointikieli tukee vain kutsua arvon mukaan ja puhelu osoitteen mukaan. Mutta C ++ tukee soittoa viittaamalla yhdessä kahden edellisen mekanismin kanssa. Tässä artikkelissa olemme nähneet useita toimivia esimerkkejä puhelun käsittelyn osoitteen ja kutsun viitteestä käsitteen ymmärtämiseksi. Osoitteen mukaan soittaminen on erittäin tehokas ja suosittu tapa sulautetuissa verkkotunnussovelluksissa.