C ++ Tumawag Sa Pamamagitan ng Address at Tumawag Sa pamamagitan ng Sanggunian

C Call Address



Ang C ++ ay isang kakayahang umangkop na pangkalahatang-layunin na wika ng programa. Orihinal na nilikha ito ng Bjarne Stroustrup, isang siyentipikong computer sa Denmark, pabalik noong 1985. Sinusuportahan ng C ++ ang mga pamamaraan ng pagpasa ng tatlong parameter, ibig sabihin, tawag ayon sa halaga, pagtawag ayon sa address, at pagtawag ayon sa sanggunian. Sa artikulong ito, tatalakayin namin ang tungkol sa tawag sa pamamagitan ng address at tawag sa pamamagitan ng mekanismo ng sanggunian.

Ano ang isang pagpapaandar?

Bago kami tumalon sa aktwal na paksa, kailangan nating maunawaan kung ano ang pagpapaandar sa C ++. Marami sa inyo ay maaaring pamilyar na sa mga pagpapaandar.







Ang isang pagpapaandar ay karaniwang isang piraso ng code na maaaring magamit upang maisagawa ang isang tiyak na gawain. Pangunahing ginagamit ang isang pagpapaandar upang mabawasan ang paulit-ulit na code sa isang C ++ na programa. Tumatagal ito ng input bilang mga parameter at ibabalik ang output bilang isang halaga ng pagbabalik. Kung tinukoy namin ang pagpapaandar nang isang beses, maaari naming tawagan / gamitin ito nang maraming beses sa susunod na bahagi ng aming programa. Sa ganoong paraan, nakakatipid kami ng maraming paulit-ulit na code sa programa.



Ang bawat programa ng C ++ ay magkakaroon ng pangunahing () pagpapaandar. Ang pangunahing () pagpapaandar ay ang entry point para sa isang C ++ program. Bukod sa pangunahing () pagpapaandar, maaaring tukuyin ng programmer ang maraming mga pagpapaandar ayon sa gusto nila.



Narito ang syntax ng pagtukoy ng isang pagpapaandar:





Return_type Function_Name(Listahan ng parameter ng input)

Ang pag-andar sa C ++ ay maaaring tanggapin ang 0 o higit pang bilang ng mga parameter ng pag-input, samantalang maaari nitong ibalik ang isang pabalik na halaga.

Ano ang Address?

Mayroong dalawang uri ng mga variable sa C ++ (katulad ng C wika) - Variable ng Data at Variable ng Address. Ginagamit ang variable ng address upang maiimbak ang address ng isa pang variable ng data. Halimbawa, isaalang-alang natin ang sumusunod na snippet ng code:



intako= 100;
int *ptr= &ako;

Dito, sinasabi sa amin ng unang pahayag na ang variable i ay isang variable ng data, at itinatago nito ang halagang 100. Sa pangalawang pahayag, ipinapahayag namin ang isang variable ng pointer, ibig sabihin, ptr, at pinasimulan ito ng address ng variable i.

Ano ang Sanggunian?

Ang sanggunian ay isa pang makapangyarihang tampok ng wikang C ++. Isaalang-alang natin ang sumusunod na snippet ng code:

intsa= 200;
int &r=sa;

Sa halimbawang ito, idineklara namin ang isang integer, ibig sabihin, a at pagkatapos ay idineklara ang isang variable na sanggunian r, na pinasimulan ng halaga ng a. Kaya, ang variable ng sanggunian ay walang iba kundi isang alias ng isa pang variable.

Mga pamamaraan ng pagpasa ng parameter:

Mayroong tatlong uri ng mga pamamaraan ng pagpasa ng parameter sa wika ng C ++:

  1. Tumawag ayon sa halaga / Ipasa ayon sa halaga
  2. Tumawag ayon sa address / Pass by address
  3. Tumawag sa pamamagitan ng sanggunian / Ipasa sa pamamagitan ng sanggunian

Sa artikulong ito, tinatalakay namin ang tungkol sa - Tumawag ayon sa address at Tumawag sa pamamagitan ng sanggunian.

Ano ang Call By Address / Pass by address?

Sa kaso ng Tawag sa pamamagitan ng address / Pass sa pamamagitan ng paraan ng address, ang mga argumento sa pagpapaandar ay ipinapasa bilang address. Ipinapasa ng pagpapaandar ng tumatawag ang address ng mga parameter. Ang mga variable ng pointer ay ginagamit sa kahulugan ng pagpapaandar. Sa tulong ng paraan ng pagtawag sa pamamagitan ng address, maaaring ma-access ng function ang aktwal na mga parameter at baguhin ang mga ito. Makakakita kami ng isang halimbawa ng paraan ng Pagtawag ayon sa address sa ibang bahagi ng artikulong ito.

Ano ang Call By Reference / Pass by refer?

Sa Tawag sa pamamagitan ng sanggunian / Pass sa pamamagitan ng sanggunian na pamamaraan, ang mga parameter ng pagpapaandar ay ipinapasa bilang isang sanggunian. Sa loob ng kahulugan ng pagpapaandar, ang mga aktwal na parameter ay na-access gamit ang variable ng sanggunian.

Mga halimbawa:

Ngayon, dahil nauunawaan namin ang konsepto ng mga pamamaraan ng pagpasa ng parameter, makakakita kami ng maraming mga halimbawa ng programa upang maunawaan ang mekanismo ng pagpasa ng parameter sa C ++:

  1. Halimbawa-1 - Tumawag ayon sa Address (1)
  2. Halimbawa-2 - Tumawag ayon sa Address (2)
  3. Halimbawa-3 - Tumawag ayon sa Sanggunian (1)
  4. Halimbawa-4 - Tumawag ayon sa Sanggunian (2)

Ang unang dalawang halimbawa ay ibinigay upang ipaliwanag kung paano gumagana ang paraan ng Tawag ayon sa address sa C ++. Ang huling dalawang halimbawa ay upang ipaliwanag ang konsepto ng Tawag sa pamamagitan ng sanggunian.

Halimbawa-1 - Tumawag ayon sa Address (1)

Sa halimbawang ito, ipapakita namin ang tawag sa pamamagitan ng mekanismo ng address. Mula sa pangunahing () pagpapaandar, tinatawagan namin ang hello () na pagpapaandar at ipinapasa ang address ng var. Sa kahulugan ng pagpapaandar, natatanggap namin ang address ng var sa isang variable ng pointer, ibig sabihin, p. Sa loob ng hello ng pagpapaandar, ang halaga ng var ay binabago sa 200 sa tulong ng pointer. Samakatuwid, ang halaga ng var ay nababago sa 200 sa loob ng pangunahing () pag-andar pagkatapos ng hello () function na tawag.

# isama
gamit namespaceoras;

walang bisaKamusta(int *p)
{
gastos <<endl<< 'Sa loob ng hello () pagpapaandar:' <<endl;
gastos << 'Halaga ng * p =' << *p<<endl;
*p= 200;
gastos << 'Halaga ng * p =' << *p<<endl;
gastos << 'Paglabas ng hello () function.' <<endl;
}

intpangunahing()
{
intkung saan= 100;
gastos << 'Halaga ng var sa loob ng pangunahing () function =' <<kung saan<<endl;

Kamusta(&kung saan);

gastos <<endl<< 'Halaga ng var sa loob ng pangunahing () function =' <<kung saan<<endl;

bumalik ka 0;
}

Halimbawa-2 - Tumawag ayon sa Address (2)

Ito ay isa pang halimbawa ng paraan ng pagtawag ayon sa address. Sa halimbawang ito, ipapaliwanag namin kung paano magagamit ang tawag sa pamamagitan ng pamamaraan upang malutas ang isang problema sa totoong buhay. Halimbawa, nais naming magsulat ng isang pagpapaandar upang mapagpalit ang dalawang variable. Kung gagamitin namin ang tawag sa pamamagitan ng mekanismo ng halaga upang magpalitan ng dalawang variable, ang mga aktwal na variable ay hindi napapalit sa function ng tumatawag. Ang paraan ng pagtawag sa pamamagitan ng address ay maaaring magamit sa isang senaryong iyon. Sa halimbawang ito, ipinapasa namin ang address ng parehong var_1 (& var_1) at var_2 (& var_2) sa pagpapaandar ng mySwap (). Sa loob ng pagpapaandar ng mySwap (), nakikipagpalit kami ng mga halaga ng dalawang variable na ito sa tulong ng mga payo. Tulad ng nakikita mo sa output sa ibaba, ang aktwal na halaga ng mga variable na ito ay napapalitan sa pangunahing () pagpapaandar matapos na maipatupad ang pagpapaandar ng mySwap ().

# isama
gamit namespaceoras;

walang bisamySwap(int *vptr_1,int *vptr_2)
{
inttemp_var;
temp_var= *vptr_1;
*vptr_1= *vptr_2;
*vptr_2=temp_var;
}

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

gastos << 'Bago tawagan ang pagpapaandar ng mySwap (), halaga ng var_1:' <<var_1<<endl;
gastos << 'Bago tawagan ang pagpapaandar ng mySwap (), halaga ng var_2:' <<var_2<<endl<<endl;

gastos << 'Tumatawag sa mySwap () function - Tumawag ayon sa address.' <<endl<<endl;
mySwap(&var_1,&var_2);

gastos << 'Matapos tawagan ang pagpapaandar ng mySwap (), halaga ng var_1:' <<var_1<<endl;
gastos << 'Matapos tawagan ang pagpapaandar ng mySwap (), halaga ng var_2:' <<var_2<<endl;

bumalik ka 0;
}

Halimbawa-3 - Tumawag ayon sa Sanggunian (1)

Sa halimbawang ito, ipapakita namin kung paano gumagana ang tawag sa pamamagitan ng sanggunian sa C ++. Sa hello () na kahulugan ng pagpapaandar, ang halaga ay natatanggap bilang isang variable na sanggunian (& p). Sa tulong ng variable ng sanggunian (ibig sabihin, p), nagagawa nating baguhin ang halaga ng aktwal na parameter (var) sa loob ng pangunahing () pagpapaandar.

# isama
gamit namespaceoras;

walang bisaKamusta(int &p)
{
gastos <<endl<< 'Sa loob ng hello () pagpapaandar:' <<endl;
gastos << 'Halaga ng p =' <<p<<endl;
p= 200;
gastos << 'Halaga ng p =' <<p<<endl;
gastos << 'Paglabas ng hello () function.' <<endl;
}

intpangunahing()
{
intkung saan= 100;
gastos << 'Halaga ng var sa loob ng pangunahing () function =' <<kung saan<<endl;

Kamusta(kung saan);

gastos <<endl<< 'Halaga ng var sa loob ng pangunahing () function =' <<kung saan<<endl;

bumalik ka 0;
}

Halimbawa-4 - Tumawag ayon sa Sanggunian (2)

Ito ay isa pang halimbawa ng isang tawag sa pamamagitan ng sanggunian. Sa halimbawang ito, ipapakita namin kung paano gumagana ang tawag sa pamamagitan ng sanggunian sa C ++ sa tulong ng isang halimbawa sa totoong mundo. Ang pagpapaandar ng mySwap () ay tinawag mula sa pangunahing () pagpapaandar na may mga sumusunod na parameter - var_1 at var_2. Sa loob ng pagpapaandar ng mySwap (), tumatanggap kami ng mga parameter bilang mga variable na sanggunian.

# isama
gamit namespaceoras;

walang bisamySwap(int &vref_1,int &vref_2)
{
inttemp_var;
temp_var=vref_1;
vref_1=vref_2;
vref_2=temp_var;
}

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

gastos << 'Bago tawagan ang pagpapaandar ng mySwap (), halaga ng var_1:' <<var_1<<endl;
gastos << 'Bago tawagan ang pagpapaandar ng mySwap (), halaga ng var_2:' <<var_2<<endl<<endl;

gastos << 'Tumatawag sa mySwap () na pag-andar - Tumawag sa pamamagitan ng sanggunian.' <<endl<<endl;
mySwap(var_1, var_2);

gastos << 'Matapos tawagan ang pagpapaandar ng mySwap (), halaga ng var_1:' <<var_1<<endl;
gastos << 'Matapos tawagan ang pagpapaandar ng mySwap (), halaga ng var_2:' <<var_2<<endl;

bumalik ka 0;
}

Konklusyon

Pag-unawa sa mga pamamaraan ng pagpasa ng parameter sa C ++ ay napaka-kritikal. Sinusuportahan ng wika ng C na programa ang Tawag ayon sa halaga at Tawag ayon sa address lamang. Ngunit, sinusuportahan ng C ++ ang Tawag sa pamamagitan ng sanggunian kasama ang nakaraang dalawang mekanismo. Sa artikulong ito, nakita namin ang maraming mga gumaganang halimbawa upang maunawaan ang konsepto ng Tawag ayon sa address at Tawag sa pamamagitan ng sanggunian. Ang tawag sa pamamagitan ng address ay isang napakalakas at tanyag na pamamaraan sa mga naka-embed na application ng domain.