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

C Call Address



C ++ ir elastīga universāla 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., zvanu pēc vērtības, zvanu pēc adreses un zvanu pēc atsauces. Šajā rakstā mēs apspriedīsim zvanu pēc adreses un zvanu pēc atsauces mehānisma.

Kas ir funkcija?

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







Funkcija būtībā ir koda gabals, ko var izmantot, lai veiktu noteiktu uzdevumu. Funkciju galvenokārt izmanto, lai samazinātu atkārtotu 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 to varam 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 galvenā () funkcija. Galvenā () funkcija ir ieejas punkts C ++ programmai. Papildus galvenajai () funkcijai programmētājs var definēt tik daudz funkciju, cik vēlas.



Šeit ir funkcijas definēšanas sintakse:





Atgriešanās_ tips Funkcijas_nosaukums(Ievades parametru saraksts)

Funkcija C ++ var pieņemt 0 vai vairāk ievades parametru, bet 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:



inti= 100;
int *ptr= &i;

Šeit pirmais paziņojums mums norāda, ka mainīgais i ir datu mainīgais, un tas saglabā vērtību 100. Otrajā paziņojumā mēs deklarējam rādītāja mainīgo, t.i., ptr, un inicializējam to ar mainīgā i adresi.

Kas ir atsauce?

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

intuz= 200;
int &r=uz;

Šajā piemērā mēs esam deklarējuši veselu skaitli, ti, a un pēc tam deklarējuši atsauces mainīgo r, kas tiek inicializēts ar a vērtību. Tātad atsauces mainīgais ir 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 / Iziet pēc vērtības
  2. Zvaniet pēc adreses / ejiet pēc adreses
  3. Zvaniet pēc atsauces / Iet pēc atsauces

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

Kas ir zvans pēc adreses / caurlaide pēc adreses?

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

Kas ir zvans pēc atsauces / caurlaide?

Metodā Zvanīt pēc atsauces / Iziet pēc atsauces 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ākus programmu piemērus, lai izprastu parametru nodošanas mehānismu C ++:

  1. 1. piemērs-zvaniet pēc adreses (1)
  2. 2. piemērs-zvaniet pēc adreses (2)
  3. 3. piemērs-zvans pēc atsauces (1)
  4. 4. piemērs. Zvans pēc atsauces (2)

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

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

Šajā piemērā mēs demonstrēsim zvana pēc adreses mehānismu. No galvenās () funkcijas mēs izsaucam hello () funkciju un nododam adresi var. Funkcijas definīcijā mēs saņemam var adresi rādītāja mainīgajā, t.i., 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 pēc sveiciena () funkcijas izsaukuma var vērtība mainās uz 200 galvenajā () funkcijā.

#iekļaut
izmantojot vārda telpastundas;

spēkā neesošsSveiki(int *lpp)
{
izmaksas <<endl<< 'Inside hello () funkcija:' <<endl;
izmaksas << 'Vērtība *p =' << *lpp<<endl;
*lpp= 200;
izmaksas << 'Vērtība *p =' << *lpp<<endl;
izmaksas << 'Iziet no sveiciena () funkcijas.' <<endl;
}

intgalvenais()
{
intkur= 100;
izmaksas << 'Var vērtība galvenajā () funkcijā =' <<kur<<endl;

Sveiki(&kur);

izmaksas <<endl<< 'Var vērtība galvenajā () funkcijā =' <<kur<<endl;

atgriezties 0;
}

2. piemērs-zvaniet 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, lai atrisinātu reālās dzīves problēmu. 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 apmainīti zvanītāja funkcijā. Šādā gadījumā var izmantot zvana pēc adreses metodi. Šajā piemērā mēs nododam gan var_1 (& var_1), gan var_2 (& var_2) adresi mySwap () funkcijai. Funkcijas mySwap () ietvaros mēs mainām šo divu mainīgo vērtības, izmantojot rādītājus. Kā redzams zemāk redzamajā izvadē, šo mainīgo faktiskā vērtība tiek mainīta galvenajā () funkcijā pēc tam, kad ir izpildīta funkcija mySwap ().

#iekļaut
izmantojot vārda telpastundas;

spēkā neesošsmySwap(int *vptr_1,int *vptr_2)
{
inttemp_var;
temp_var= *vptr_1;
*vptr_1= *vptr_2;
*vptr_2=temp_var;
}

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

izmaksas << 'Pirms izsaukt funkciju mySwap (), vērtība var_1:' <<var_1<<endl;
izmaksas << 'Pirms izsaukt funkciju mySwap (), vērtība var_2:' <<var_2<<endl<<endl;

izmaksas << 'Funkcijas mySwap () izsaukšana - zvaniet pēc adreses.' <<endl<<endl;
mySwap(&var_1,&var_2);

izmaksas << 'Pēc funkcijas mySwap () izsaukšanas vērtība var_1:' <<var_1<<endl;
izmaksas << 'Pēc funkcijas mySwap () izsaukšanas vērtība var_2:' <<var_2<<endl;

atgriezties 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). Izmantojot atsauces mainīgo (t.i., p), mēs varam mainīt faktiskā parametra (var) vērtību galvenās () funkcijas ietvaros.

#iekļaut
izmantojot vārda telpastundas;

spēkā neesošsSveiki(int &lpp)
{
izmaksas <<endl<< 'Inside hello () funkcija:' <<endl;
izmaksas << 'P vērtība' <<lpp<<endl;
lpp= 200;
izmaksas << 'P vērtība' <<lpp<<endl;
izmaksas << 'Iziet no sveiciena () funkcijas.' <<endl;
}

intgalvenais()
{
intkur= 100;
izmaksas << 'Var vērtība galvenajā () funkcijā =' <<kur<<endl;

Sveiki(kur);

izmaksas <<endl<< 'Var vērtība galvenajā () funkcijā =' <<kur<<endl;

atgriezties 0;
}

4. piemērs. Zvans pēc atsauces (2)

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

#iekļaut
izmantojot vārda telpastundas;

spēkā neesošsmySwap(int &vref_1,int &vref_2)
{
inttemp_var;
temp_var=vref_1;
vref_1=vref_2;
vref_2=temp_var;
}

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

izmaksas << 'Pirms izsaukt funkciju mySwap (), vērtība var_1:' <<var_1<<endl;
izmaksas << 'Pirms izsaukt funkciju mySwap (), vērtība var_2:' <<var_2<<endl<<endl;

izmaksas << 'Funkcijas mySwap () izsaukšana - zvaniet pēc atsauces.' <<endl<<endl;
mySwap(var_1, var_2);

izmaksas << 'Pēc funkcijas mySwap () izsaukšanas vērtība var_1:' <<var_1<<endl;
izmaksas << 'Pēc funkcijas mySwap () izsaukšanas vērtība var_2:' <<var_2<<endl;

atgriezties 0;
}

Secinājums

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