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

C Call Address



C ++ on paindlik üldotstarbeline programmeerimiskeel. See loodi algselt Bjarne Stroustrup, Taani arvutiteadlane, 1985. aastal. C ++ toetab kolme parameetriga edastusmeetodeid, st kõne väärtuse järgi, kõne aadressi järgi ja kõne viite järgi. Selles artiklis käsitleme kõne aadressi ja kõne viitemehhanismi järgi.

Mis on funktsioon?

Enne tegelikku teemasse hüppamist peame mõistma, mis funktsioon on C ++. Paljud teist võivad funktsioonidega juba tuttavad olla.







Funktsioon on põhimõtteliselt kooditükk, 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 määratleme funktsiooni üks kord, saame seda oma programmi hilisemas osas mitu korda helistada/kasutada. Nii salvestame programmis palju korduvat koodi.



Igal C ++ programmil peab olema põhifunktsioon (). Põhifunktsioon () on C ++ programmi sisenemispunkt. Lisaks põhifunktsioonile () saab programmeerija määratleda nii palju funktsioone kui soovib.



Siin on funktsiooni määratlemise süntaks:





Tagastustüüp Funktsiooni_nimi(Sisendparameetrite loend)

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

Mis on Aadress?

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



inti= 100;
int *ptr= &i;

Siin ütleb esimene avaldus meile, et muutuja i on andmemuutuja ja see salvestab väärtuse 100. Teises avalduses deklareerime kursori muutuja, st ptr, ja lähtestame selle muutuja i aadressiga.

Mis on viide?

Viide on veel üks võimas C ++ keele omadus. Vaatleme järgmist koodilõiku:

intet= 200;
int &r=et;

Selles näites oleme deklareerinud täisarvu, st a ja seejärel deklareerinud võrdlusmuutuja r, mis lähtestatakse väärtusega a. Niisiis, võrdlusmuutuja pole midagi muud kui teise muutuja varjunimi.

Parameetrite edastamise meetodid:

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

  1. Kõne väärtuse järgi / läbimine väärtuse järgi
  2. Helista aadressi järgi / mine aadressi järgi
  3. Kõne viite järgi / Viide

Käesolevas artiklis käsitleme teemasid - Kõne aadressi järgi ja Viide.

Mis on kõne aadressi järgi / pass aadressi järgi?

Aadressi kaudu helistamise / aadressi kaudu edastamise korral edastatakse funktsiooni argumendid aadressina. Helistajafunktsioon edastab parameetrite aadressi. Funktsiooni määratluses kasutatakse kursori muutujaid. Kõne aadressi järgi meetodi abil pääseb funktsioon juurde tegelikele parameetritele ja neid muuta. Näeme selle artikli hiljem jaotises Kõne aadressi järgi näite.

Mis on kõne viide / viide?

Menüüs Call by reference / Pass by reference meetod edastatakse funktsiooni parameetrid võrdlusena. Funktsiooni definitsiooni sees on tegelikele parameetritele juurdepääs viitemuutuja abil.

Näited:

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

  1. Näide-1-helistamine aadressi järgi (1)
  2. Näide 2-helistamine aadressi järgi (2)
  3. Näide-3-Kõne viite järgi (1)
  4. Näide-4-Kõne viite järgi (2)

Esimesed kaks näidet on toodud selgitamaks, kuidas aadressi järgi helistamise meetod töötab C ++ keeles. Viimased kaks näidet on kõne selgitamine viite mõiste alusel.

Näide-1-helistamine aadressi järgi (1)

Selles näites demonstreerime kõne aadressi mehhanismi järgi. Põhifunktsioonist () kutsume funktsiooni tere () ja edastame var. Aadressi. Funktsiooni definitsioonis saame kursori muutuja var aadressi, st p. Funktsiooni tere sees muudetakse kursori abil var väärtus 200 -ks. Seetõttu muutub var väärtus pärast funktsiooni hello () funktsiooni põhifunktsiooni () sees väärtuseks 200.

#kaasake
kasutades nimeruumtundi;

tühineTere(int *lk)
{
maksma <<endl<< Funktsioon „Tere tervisele ()”: <<endl;
maksma << 'Väärtus *p =' << *lk<<endl;
*lk= 200;
maksma << 'Väärtus *p =' << *lk<<endl;
maksma << Funktsioonist tere () väljumine. ' <<endl;
}

intpeamine()
{
intkus= 100;
maksma << 'Var väärtus main () funktsiooni sees =' <<kus<<endl;

Tere(&kus);

maksma <<endl<< 'Var väärtus main () funktsiooni sees =' <<kus<<endl;

tagasi 0;
}

Näide 2-helistamine aadressi järgi (2)

See on veel üks näide kõne aadressi järgi meetodist. Selles näites selgitame, kuidas saab aadressi järgi kõne meetodit kasutada tegeliku probleemi lahendamiseks. Näiteks tahame kirjutada funktsiooni kahe muutuja vahetamiseks. Kui kasutame kõne muutmise mehhanismi kahe muutuja vahetamiseks, siis tegelikke muutujaid helistajafunktsioonis ei vahetata. Sellises stsenaariumis saab kasutada aadressi järgi kõne meetodit. Selles näites edastame nii var_1 (& var_1) kui ka var_2 (& var_2) aadressi funktsioonile mySwap (). Funktsiooni mySwap () sees vahetame kursorite abil nende kahe muutuja väärtused. Nagu näete alloleval väljundil, vahetatakse nende muutujate tegelik väärtus põhifunktsioonis () pärast funktsiooni mySwap () täitmist.

#kaasake
kasutades nimeruumtundi;

tühinemySwap(int *vptr_1,int *vptr_2)
{
inttemp_var;
temp_var= *vptr_1;
*vptr_1= *vptr_2;
*vptr_2=temp_var;
}

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

maksma << 'Enne funktsiooni mySwap () kutsumist määrake var_1 väärtus:' <<var_1<<endl;
maksma << 'Enne funktsiooni mySwap () kutsumist määrake var_2 väärtus:' <<var_2<<endl<<endl;

maksma << 'Funktsiooni mySwap () helistamine - helistage aadressi järgi.' <<endl<<endl;
mySwap(&var_1,&var_2);

maksma << 'Pärast funktsiooni mySwap () helistamist on var_1 väärtus:' <<var_1<<endl;
maksma << 'Pärast funktsiooni mySwap () helistamist on var_2 väärtus:' <<var_2<<endl;

tagasi 0;
}

Näide-3-Kõne viite järgi (1)

Selles näites demonstreerime, kuidas viitelt kutsumine C ++ keeles töötab. Funktsiooni hello () definitsioonis võetakse väärtus vastu muutujana (& p). Võrdlusmuutuja (st p) abil saame muuta põhifunktsiooni () funktsioonis tegeliku parameetri (var) väärtust.

#kaasake
kasutades nimeruumtundi;

tühineTere(int &lk)
{
maksma <<endl<< Funktsioon „Tere tervisele ()”: <<endl;
maksma << 'Väärtus p =' <<lk<<endl;
lk= 200;
maksma << 'Väärtus p =' <<lk<<endl;
maksma << Funktsioonist tere () väljumine. ' <<endl;
}

intpeamine()
{
intkus= 100;
maksma << 'Var väärtus main () funktsiooni sees =' <<kus<<endl;

Tere(kus);

maksma <<endl<< 'Var väärtus main () funktsiooni sees =' <<kus<<endl;

tagasi 0;
}

Näide-4-Kõne viite järgi (2)

See on veel üks näide viitest kõne kohta. Selles näites demonstreerime reaalse näite abil, kuidas C ++ -is töötab kõne kaudu viide. Funktsiooni mySwap () kutsutakse põhifunktsioonist () järgmiste parameetritega - var_1 ja var_2. Funktsiooni mySwap () sees saame parameetrid võrdlusmuutujatena.

#kaasake
kasutades nimeruumtundi;

tühinemySwap(int &vref_1,int &vref_2)
{
inttemp_var;
temp_var=vref_1;
vref_1=vref_2;
vref_2=temp_var;
}

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

maksma << 'Enne funktsiooni mySwap () kutsumist määrake var_1 väärtus:' <<var_1<<endl;
maksma << 'Enne funktsiooni mySwap () kutsumist määrake var_2 väärtus:' <<var_2<<endl<<endl;

maksma << 'Funktsiooni mySwap () helistamine - helistamine viite alusel.' <<endl<<endl;
mySwap(var_1, var_2);

maksma << 'Pärast funktsiooni mySwap () helistamist on var_1 väärtus:' <<var_1<<endl;
maksma << 'Pärast funktsiooni mySwap () helistamist on var_2 väärtus:' <<var_2<<endl;

tagasi 0;
}

Järeldus

Parameetrite edastamise meetodite mõistmine C ++ on väga määrav. C programmeerimiskeel toetab ainult kõne järgi ja kõne aadressi järgi. Kuid C ++ toetab kõnet viitega koos kahe eelneva mehhanismiga. Selles artiklis oleme näinud mitmeid töötavaid näiteid, et mõista kontseptsiooni „Kõne aadressi järgi” ja „Viide”. Aadressi järgi helistamine on manustatud domeenirakendustes väga võimas ja populaarne meetod.