C ++

C ++ kõne aadressi ja viite järgi

C ++ kõne aadressi ja viite järgi

C ++ on paindlik üldotstarbeline programmeerimiskeel. Selle lõi algselt Bjarne Stroustrup, Taani arvutiteadlane, juba 1985. aastal. C ++ toetab kolme parameetriga edastamismeetodeid, st.e., kõne väärtuse, kõne aadressi ja viite järgi. Selles artiklis käsitleme kõnede aadressi ja viite mehhanismide kohta.

Mis on funktsioon?

Enne tegelikule teemale hüppamist peame mõistma, mis funktsioon on C-s++. Paljud teist võivad funktsioonidega juba tuttavad olla.

Funktsioon on põhimõtteliselt koodijupp, mida saab kasutada teatud ülesande täitmiseks. Funktsiooni kasutatakse peamiselt korduva koodi vähendamiseks C ++ programmis. See võtab parameetritena sisendi ja tagastab väljundi tagastusväärtusena. Kui defineerime funktsiooni üks kord, saame seda oma programmi hilisemas osas mitu korda kutsuda / kasutada. Nii salvestame programmi palju korduvaid koode.

Igal C ++ programmil peab olema funktsioon „main ()”. Funktsioon “main ()” on C ++ programmi alguspunkt. Lisaks funktsioonile “main ()” saab programmeerija määratleda nii palju funktsioone kui soovib.

Siin on funktsiooni määratlemise süntaks:

Return_type Funktsiooni Nimi (sisendparameetrite loend)

Funktsioon C ++ võimaldab aktsepteerida 0 või enamat arvu sisendparameetreid, samas kui see võib tagastada ainult ühe tagastusväärtuse.

Mis on aadress?

C ++ -s on kahte tüüpi muutujaid (sarnaselt C-keelega) - andmemuutuja ja aadressimuutuja. Aadressimuutujat kasutatakse teise andmemuutuja aadressi salvestamiseks. Vaatleme näiteks järgmist koodilõiku:

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

Esimene lause ütleb meile, et muutuja “i” on andmemuutuja ja see salvestab väärtust 100. Teises lauses kuulutame kursori muutujat, st.e. "Ptr" ja initsialiseerimine muutuja "i" aadressiga.

Mis on viide?

Viide on C ++ keele teine ​​võimas omadus. Vaatleme järgmist koodilõiku:

int a = 200;
int & r = a;

Selles näites oleme deklareerinud täisarvu, st.e. “A” ja deklareeriti seejärel võrdlusmuutuja “r”, mis initsialiseeritakse väärtusega “a”. Seega pole võrdlusmuutuja muud kui teise muutuja pseudonüüm.

Parameetrite edastamise meetodid:

Parameetrite edastamise meetodeid on C ++ keeles kolme tüüpi:

  1. Helistage väärtuse järgi / edastage väärtuse järgi
  2. Helistage aadressi järgi / mööduge aadressilt
  3. Helistage viitega / edastage viitega

Selles artiklis arutleme teemal - Kõne aadressi ja Kõne viite järgi.

Mis on kõne aadress / pass aadressiga?

Meetodi puhul Call by address / Pass by address edastatakse funktsiooni argumendid aadressina. Helistajafunktsioon edastab parameetrite aadressi. Funktsiooni määratluses kasutatakse kursori muutujaid. Meetodi Call by address abil saab funktsioon tegelikele parameetritele juurde pääseda ja neid muuta. Näeme meetodi Kõne aadressi järgi näidet selle artikli jaotisest hiljem.

Mis on kõne viitega / viide?

Funktsioonis Call by reference / Pass by reference meetod edastatakse funktsiooniparameetrid viitena. Funktsiooni definitsioonis on tegelikele parameetritele juurdepääs võrdlusmuutuja abil.

Näited:

Kuna me mõistame parameetrite edastamise meetodite mõistet, näeme C ++ parameetrite edastamise mehhanismi mõistmiseks mitmeid näidisprogramme:

  1. Näide 1 - kõne aadressi järgi (1)
  2. Näide 2 - kõne aadressi järgi (2)
  3. Näide 3 - kõne viitega (1)
  4. Näide 4 - kõne viitega (2)

Esimesed kaks näidet on toodud selgitamaks, kuidas kõne aadressi järgi meetod töötab C-s++. Kaks viimast näidet selgitavad konkursikutset kontseptsiooni järgi.

Näide 1 - kõne aadressi järgi (1)

Selles näites demonstreerime kõne aadressi järgi. Funktsioonist “main ()” kutsume funktsiooni “tere ()” ja edastame aadressi “var”. Funktsiooni definitsioonis saame kursori muutujaga "var" aadressi, st.e., "P". Funktsiooni tere sees muudetakse “var” väärtust kursori abil väärtuseks 200. Seetõttu muutub funktsiooni „main ()” sees väärtuse „var” väärtuseks 200 pärast funktsiooni „tere ()” kõnet.

# kaasata
nimeruumi kasutamine std;
tühine tere (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;
tere (& var);
cout << endl << "Value of var inside main() function = " << var << endl;
tagastama 0;

Näide 2 - kõne aadressi järgi (2)

See on veel üks näide kõne aadressi järgi meetodist. Selles näites selgitame, kuidas saab kõne aadressi abil meetodit kasutada tegeliku elu probleemi lahendamiseks. Näiteks tahame kirjutada funktsiooni kahe muutuja vahetamiseks. Kui kasutame kahe muutuja vahetamiseks mehhanismi kõne väärtuse järgi, ei vahetata tegelikke muutujaid helistaja funktsioonis. Sellises stsenaariumis saab kasutada kõne aadressi järgi meetodit. Selles näites edastame funktsioonile „mySwap ()” nii var_1 (& var_1) kui ka var_2 (& var_2) aadressi. Funktsiooni “mySwap ()” sees vahetame kursorite abil nende kahe muutuja väärtusi. Nagu näete allpool olevast väljundist, vahetatakse nende muutujate tegelik väärtus funktsiooni „main ()” pärast funktsiooni „mySwap ()” käivitamist.

# kaasata
nimeruumi kasutamine 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 << endl;
cout << "Calling mySwap() function - Call by address." << endl << 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;
tagastama 0;

Näide 3 - viide (1)

Selles näites näitame, kuidas viide kõne töötab C-s++. Funktsiooni „tere ()” definitsioonis võetakse väärtus vastu võrdlusmuutujana (& p). Võrdlusmuutuja (i.e., p), saame funktsiooni “main ()” sees muuta tegeliku parameetri (var) väärtust.

# kaasata
nimeruumi kasutamine std;
tühine tere (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;
tere (var);
cout << endl << "Value of var inside main() function = " << var << endl;
tagastama 0;

Näide 4 - kõne viitega (2)

See on veel üks näide viitekutsest. Selles näites näitame reaalse näite abil, kuidas viide kõne töötab C ++ keeles. Funktsiooni “mySwap ()” kutsutakse funktsioonist “main ()” järgmiste parameetritega - var_1 ja var_2. Funktsiooni „mySwap ()” sees saame parameetrid võrdlusmuutujatena.

# kaasata
nimeruumi kasutamine 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 << endl;
cout << "Calling mySwap() function - Call by reference." << endl << 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;
tagastama 0;

Järeldus

Parameetrite edastamise meetodite mõistmine C++ on väga oluline. C-programmeerimiskeel toetab ainult kõnet väärtuse ja kõne aadressi järgi. Kuid C ++ toetab Call-i koos kahe eelmise mehhanismiga. Selles artiklis oleme näinud mitmeid toimivaid näiteid kõne aadressi ja viite kaudu mõistmise mõistmiseks. Aadressi järgi helistamine on manustatud domeenirakendustes väga võimas ja populaarne meetod.

Parimad Linuxi käsurea mängud
Käsurida pole Linuxi kasutamisel lihtsalt teie suurim liitlane - see võib olla ka meelelahutusallikas, sest saate seda kasutada paljude lõbusate mängu...
Parimad Linuxi mängupuldi kaardistamise rakendused
Kui teile meeldib mängida Linuxis mänge tavalise klaviatuuri ja hiire sisestussüsteemi asemel mängupuldiga, on teie jaoks mõned kasulikud rakendused. ...
Kasulikud tööriistad Linuxi mängijatele
Kui teile meeldib Linuxis mänge mängida, on tõenäoline, et olete mängukogemuse parandamiseks kasutanud selliseid rakendusi ja utiliite nagu Wine, Lutr...