C ++

C ++ Soita osoitteella ja Soita viitteellä

C ++ Soita osoitteella ja Soita viitteellä

C ++ on joustava yleiskäyttöinen ohjelmointikieli. Sen loi alun perin Bjarne Stroustrup, tanskalainen tietojenkäsittelytieteen tutkija, vuonna 1985. C ++ tukee kolmen parametrin välitysmenetelmiä, ts.e., soita arvon mukaan, soita osoitteen mukaan ja soita viitteenä. Tässä artikkelissa aiomme keskustella puhelu osoitteesta ja puhelu viite -mekanismista.

Mikä on toiminto?

Ennen kuin siirrymme varsinaiseen aiheeseen, meidän on ymmärrettävä, mikä funktio on C: ssä++. Monet teistä saattavat jo tuntea toiminnot.

Funktio on pohjimmiltaan koodinpätkä, jota voidaan käyttää tietyn tehtävän suorittamiseen. Toimintoa käytetään pääasiassa toistettavan koodin vähentämiseen C ++ -ohjelmassa. Se ottaa syötteen parametreina ja palauttaa tuoton paluuarvona. Jos määritämme funktion kerran, voimme soittaa / käyttää sitä useita kertoja ohjelman myöhemmässä osassa. Tällä tavoin säästämme paljon toistuvaa koodia ohjelmassa.

Jokaisella C ++ -ohjelmalla on oltava “main ()” -toiminto. "Main ()" -toiminto on C ++ -ohjelman lähtökohta. “Main ()” -toiminnon lisäksi ohjelmoija voi määrittää niin monta toimintoa kuin haluaa.

Tässä on funktion määrittelyn syntakse:

Return_type Toiminnon_nimi (syöteparametrien luettelo)

Funktio C ++: ssa voi hyväksyä 0 tai useampia syöteparametreja, kun taas se voi palauttaa vain yhden paluuarvon.

Mikä on osoite?

C ++: ssa on kahden tyyppisiä muuttujia (samanlainen kuin C-kieli) - tietomuuttuja ja osoitemuuttuja. Osoitemuuttujaa käytetään toisen datamuuttujan osoitteen tallentamiseen. Tarkastellaan esimerkiksi seuraavaa koodinpätkää:

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

Tässä ensimmäinen lause kertoo meille, että muuttuja "i" on datamuuttuja ja se tallentaa arvon 100. Toisessa lauseessa julistetaan osoittimen muuttuja, ts.e. "Ptr" ja alustetaan se muuttujan "i" osoitteella.

Mikä on viite?

Viite on toinen tehokas C ++ -kielen ominaisuus. Tarkastellaan seuraavaa koodinpätkää:

int a = 200;
int & r = a;

Tässä esimerkissä olemme ilmoittaneet kokonaisluvun, ts.e. ”A” ja ilmoitti sitten viitemuuttujan ”r”, joka alustetaan arvolla “a”. Joten viitemuuttuja on vain toisen muuttujan aliaksia.

Parametrien välitysmenetelmät:

Parametrien välitysmenetelmiä on kolme tyyppiä C ++ -kielellä:

  1. Soita arvon mukaan / välitä arvo
  2. Soita osoitteella / Ohita osoitteella
  3. Soita viitteellä / Ohita viitteellä

Tässä artikkelissa keskustelemme - Soita osoitteesta ja Soita viitteeksi.

Mikä on puheluosoite / ohitusosoite?

Jos kyseessä on Call by address / Pass by address -menetelmä, funktion argumentit välitetään osoitteena. Soittajatoiminto välittää parametrien osoitteen. Osoittimen muuttujia käytetään funktion määrittelyssä. Soita osoitteella -menetelmän avulla toiminto voi käyttää todellisia parametreja ja muokata niitä. Näemme esimerkin Soita osoitteella -menetelmästä tämän artikkelin myöhemmin.

Mikä on Call By Reference / Pass by reference?

Kutsu viitteellä / Siirrä referenssimenetelmässä -toimintoparametrit välitetään viitteenä. Funktion määritelmän sisällä todellisiin parametreihin pääsee referenssimuuttujan avulla.

Esimerkkejä:

Nyt kun ymmärrämme parametrin välitysmenetelmien käsitteen, näemme useita esimerkkiohjelmia ymmärtämään parametrien välitysmekanismia C ++: ssa:

  1. Esimerkki 1 - Soita osoitteen mukaan (1)
  2. Esimerkki 2 - Soita osoitteen mukaan (2)
  3. Esimerkki 3 - Soita viitteellä (1)
  4. Esimerkki 4 - Soita viitteellä (2)

Kaksi ensimmäistä esimerkkiä annetaan selittämään, kuinka Call by address -menetelmä toimii C: ssä++. Kahden viimeisen esimerkin tarkoituksena on selittää ehdotuspyyntö viitekäsitteellä.

Esimerkki 1 - Soita osoitteen mukaan (1)

Tässä esimerkissä aiomme osoittaa puhelun osoitemekanismilla. "Main ()" -funktiolta kutsumme "hello ()" -funktion ja välitämme "var" -osoitteen. Funktion määritelmässä saamme osoitteen muuttujassa "var" osoitteen, ts.e., "P". Hello-toiminnon sisällä var-arvo muutetaan 200: ksi osoittimen avulla. Siksi “var” -arvo muuttuu 200: ksi “main ()” -toiminnon sisällä “hei ()” -toiminnon kutsun jälkeen.

#sisältää
käyttämällä nimitilaa vakio;
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;
hei (& var);
cout << endl << "Value of var inside main() function = " << var << endl;
paluu 0;

Esimerkki 2 - Soita osoitteen mukaan (2)

Tämä on toinen esimerkki puhelukohtaisesta menetelmästä. Tässä esimerkissä aiomme selittää, miten puhelu osoitteella -menetelmää voidaan käyttää tosielämän ongelman ratkaisemiseen. Haluamme esimerkiksi kirjoittaa funktion kahden muuttujan vaihtamiseksi. Jos käytämme kutsu arvomekanismin avulla vaihtamaan kaksi muuttujaa, todellisia muuttujia ei vaihdeta soittajatoiminnossa. Puhelu osoitteella -menetelmää voidaan käyttää tällaisessa tilanteessa. Tässä esimerkissä välitämme sekä var_1 (& var_1) että var_2 (& var_2) osoitteen funktiolle "mySwap ()". "MySwap ()" -funktion sisällä vaihdamme näiden kahden muuttujan arvot osoittimien avulla. Kuten alla olevasta lähdöstä näet, näiden muuttujien todellinen arvo vaihdetaan “main ()” -toimintoon sen jälkeen, kun “mySwap ()” -toiminto on suoritettu.

#sisältää
käyttämällä nimitilaa vakio;
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;
paluu 0;

Esimerkki 3 - Soita viitteellä (1)

Tässä esimerkissä aiomme osoittaa, miten viitteellinen kutsu toimii C: ssä++. "Hei ()" -funktion määritelmässä arvo vastaanotetaan referenssimuuttujana (& p). Vertailumuuttujan (i.e., p), pystymme muuttamaan todellisen parametrin (var) arvoa “main ()” -funktion sisällä.

#sisältää
käyttämällä nimitilaa vakio;
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;
hei (var);
cout << endl << "Value of var inside main() function = " << var << endl;
paluu 0;

Esimerkki 4 - Soita viitteellä (2)

Tämä on toinen esimerkki kutsusta. Tässä esimerkissä aiomme osoittaa, kuinka viitteellinen kutsu toimii C ++: ssa reaalimaailman esimerkin avulla. “MySwap ()” -toiminto kutsutaan funktiosta “main ()” seuraavilla parametreilla - var_1 ja var_2. "MySwap ()" -funktion sisällä saamme parametrit viitemuuttujina.

#sisältää
käyttämällä nimitilaa vakio;
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;
paluu 0;

Johtopäätös

Parametrien välitysmenetelmien ymmärtäminen C++ on erittäin tärkeä. C-ohjelmointikieli tukee vain puhelua arvon ja puhelun osoitteen mukaan. Mutta C ++ tukee Call-viittausta kahden edellisen mekanismin ohella. Tässä artikkelissa olemme nähneet useita toimivia esimerkkejä, joiden avulla ymmärrämme Call by address ja Call by reference -käsitteet. Soita osoitteen mukaan on erittäin tehokas ja suosittu menetelmä upotetuissa toimialueiden sovelluksissa.

Battle for Wesnoth Tutorial
The Battle for Wesnoth is one of the most popular open source strategy games that you can play at this time. Not only has this game been in developmen...
0 A.D. Tutorial
Out of the many strategy games out there, 0 A.D. manages to stand out as a comprehensive title and a very deep, tactical game despite being open sourc...
Unity3D Tutorial
Introduction to Unity 3D Unity 3D is a powerful game development engine. It is cross platform that is it allows you to create games for mobile, web, d...