C ++

C ++ zvans pēc adreses un zvans pēc atsauces

C ++ zvans pēc adreses un zvans pēc atsauces

C ++ ir elastīga vispārējas nozīmes programmēšanas valoda. Sākotnēji to izveidoja Bjarne Stroustrup, dāņu datorzinātnieks, 1985. gadā. C ++ atbalsta trīs parametru nodošanas metodes, t.i.e., zvans pēc vērtības, zvans pēc adreses un zvans pēc atsauces. Šajā rakstā mēs apspriedīsim zvana pēc adreses un zvana pēc atsauces mehānismu.

Kas ir funkcija?

Pirms ķeramies pie faktiskās tēmas, mums jāsaprot, kāda ir funkcija C++. Iespējams, ka daudzi no jums jau ir iepazinušies ar funkcijām.

Funkcija būtībā ir koda daļa, kuru var izmantot noteikta uzdevuma veikšanai. Funkcija galvenokārt tiek izmantota, lai samazinātu atkārtojošo kodu C ++ programmā. Tas ņem ievadi kā parametrus un atgriež izvadi kā atgriešanās vērtību. Ja mēs vienu reizi definējam funkciju, mēs varam to izsaukt / izmantot vairākas reizes mūsu programmas vēlākajā daļā. Tādā veidā mēs programmā saglabājam daudz atkārtotu kodu.

Katrai C ++ programmai ir funkcija “main ()”. Funkcija “main ()” ir C ++ programmas ieejas punkts. Bez funkcijas “main ()” programmētājs var definēt tik daudz funkciju, cik vēlas.

Funkcijas definēšanas sintakse:

Return_type Funkcijas nosaukums (ievades parametru saraksts)

Funkcija C ++ var pieņemt 0 vai vairāk ievades parametru skaitu, savukārt tā var atgriezt tikai vienu atgriešanās vērtību.

Kas ir adrese?

C ++ ir divu veidu mainīgie (līdzīgi kā C valodā) - datu mainīgais un adreses mainīgais. Adreses mainīgo izmanto, lai saglabātu cita datu mainīgā adresi. Piemēram, ņemsim vērā šādu koda fragmentu:

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

Šeit pirmais paziņojums mums saka, ka mainīgais “i” ir datu mainīgais un tas glabā vērtību 100. Otrajā paziņojumā mēs deklarējam rādītāja mainīgo, t.i.e. “Ptr” un inicializējot to ar mainīgā “i” adresi.

Kas ir atsauce?

Atsauce ir vēl viena spēcīga C ++ valodas iezīme. Apsvērsim šādu koda fragmentu:

int a = 200;
int & r = a;

Šajā piemērā mēs esam deklarējuši veselu skaitli, t.i.e. “A” un pēc tam deklarēja atsauces mainīgo “r”, kas tiek inicializēts ar “a” vērtību. Tātad atsauces mainīgais nav nekas cits kā cita mainīgā aizstājvārds.

Parametru nodošanas metodes:

C ++ valodā ir trīs veidu parametru nodošanas metodes:

  1. Zvanīt pēc vērtības / nodot pēc vērtības
  2. Zvanīt pēc adreses / Pass by address
  3. Zvans pēc atsauces / Pāreja ar atsauci

Šajā rakstā mēs apspriežam - Zvani pēc adreses un Zvani pēc atsauces.

Kas ir zvans pēc adreses / garām pēc adreses?

Ja izmantojat metodi Call by address / Pass by address, funkcijas argumenti tiek nodoti kā adrese. Zvanītāja funkcija nodod parametru adresi. Funkcijas definīcijā tiek izmantoti rādītāja mainīgie. Izmantojot metodi Zvans pēc adreses, funkcija var piekļūt faktiskajiem parametriem un tos modificēt. Tālāk šī raksta sadaļā redzēsim metodes Zvans pēc adreses piemēru.

Kas ir zvans pēc atsauces / caur atsauci?

Metodē Call by reference / Pass by reference, funkcijas parametri tiek nodoti kā atsauce. Funkcijas definīcijā faktiskajiem parametriem var piekļūt, izmantojot atsauces mainīgo.

Piemēri:

Tā kā mēs saprotam parametru nodošanas metožu jēdzienu, mēs redzēsim vairākas piemēru programmas, lai izprastu parametru nodošanas mehānismu C ++:

  1. 1. piemērs - zvans pēc adreses (1)
  2. 2. piemērs - zvans pēc adreses (2)
  3. 3. piemērs - zvans pēc atsauces (1)
  4. 4. piemērs - zvans, izmantojot atsauci (2)

Pirmie divi piemēri ir sniegti, lai izskaidrotu, kā zvana pēc adreses metode darbojas C++. Pēdējie divi piemēri izskaidro uzaicinājumu pēc atsauces jēdziena.

1. piemērs - zvans pēc adreses (1)

Šajā piemērā mēs parādīsim zvana pēc adreses mehānismu. No funkcijas “main ()” mēs izsaucam “hello ()” funkciju un nododam “var” adresi. Funkcijas definīcijā mēs saņemam “var” adresi rādītāja mainīgajā, t.e., “P”. Funkcijas sveiki iekšpusē ar rādītāja palīdzību “var” vērtība tiek mainīta uz 200. Tāpēc funkcijas “main ()” iekšpusē pēc “labdien ()” funkcijas izsaukuma “var” vērtība tiek mainīta uz 200.

# iekļaut
izmantojot nosaukumvietu std;
void hello (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;
sveiki (& var);
cout << endl << "Value of var inside main() function = " << var << endl;
atgriešanās 0;

2. piemērs - zvans pēc adreses (2)

Šis ir vēl viens zvana pēc adreses metodes piemērs. Šajā piemērā mēs izskaidrosim, kā zvana pēc adreses metodi var izmantot reālās dzīves problēmu risināšanai. Piemēram, mēs vēlamies uzrakstīt funkciju, lai apmainītu divus mainīgos. Ja mēs izmantojam zvana pēc vērtības mehānismu, lai apmainītu divus mainīgos, faktiskie mainīgie netiek nomainīti zvanītāja funkcijā. Šādā gadījumā var izmantot zvana pēc adreses metodi. Šajā piemērā mēs gan var_1 (& var_1), gan var_2 (& var_2) adresi nododam funkcijai “mySwap ()”. Funkcijā “mySwap ()” mēs ar rādītāju palīdzību apmainām šo divu mainīgo lielumus. Kā redzat zemāk esošajā izvadā, šo mainīgo faktiskā vērtība tiek mainīta funkcijā “main ()” pēc funkcijas “mySwap ()” izpildes.

# iekļaut
izmantojot nosaukumvietu std;
anulēt 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;
atgriešanās 0;

3. piemērs - zvans pēc atsauces (1)

Šajā piemērā mēs parādīsim, kā zvans ar atsauci darbojas C++. Funkcijas “hello ()” definīcijā vērtība tiek saņemta kā atsauces mainīgais (& p). Ar atsauces mainīgā palīdzību (t.i.e., p), mēs varam mainīt faktiskā parametra (var) vērtību “main ()” funkcijas iekšpusē.

# iekļaut
izmantojot nosaukumvietu std;
void hello (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;
sveiks (var);
cout << endl << "Value of var inside main() function = " << var << endl;
atgriešanās 0;

4. piemērs - zvans, izmantojot atsauci (2)

Šis ir vēl viens atsauces zvana piemērs. Šajā piemērā mēs parādīsim, kā zvans ar atsauci darbojas C ++, izmantojot reālās pasaules piemēru. Funkcija “mySwap ()” tiek izsaukta no funkcijas “main ()” ar šādiem parametriem - var_1 un var_2. Funkcijas “mySwap ()” iekšpusē mēs saņemam parametrus kā atsauces mainīgos.

# iekļaut
izmantojot nosaukumvietu std;
anulēt 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;
atgriešanās 0;

Secinājums

Izpratne par parametru nodošanas metodēm C++ ir ļoti izšķiroša. C programmēšanas valoda atbalsta tikai zvanu pēc vērtības un zvanu pēc adreses. Bet C ++ atbalsta Call ar atsauci kopā ar diviem iepriekšējiem mehānismiem. Šajā rakstā mēs esam redzējuši vairākus piemērus, lai izprastu jēdzienu Zvans pēc adreses un Zvans pēc atsauces. Zvans pēc adreses ir ļoti spēcīga un populāra metode iegulto domēnu lietojumprogrammās.

Kā izstrādāt spēli Linux
Pirms desmit gadiem maz Linux lietotāju varētu paredzēt, ka viņu iecienītā operētājsistēma kādu dienu būs populāra spēļu platforma komerciālām videosp...
Komerciālo spēļu dzinēju atvērtā koda porti
Bezmaksas, atvērtā koda un starpplatformu spēļu dzinēju atpūtu var izmantot, lai spēlētu vecos, kā arī dažus no diezgan nesenajiem spēļu nosaukumiem. ...
Labākās komandrindas spēles Linux
Komandrinda nav tikai lielākais sabiedrotais, lietojot Linux, bet tā var būt arī izklaides avots, jo to var izmantot, lai spēlētu daudzas jautras spēl...