C ++

C ++ Call By Address a Call By Reference

C ++ Call By Address a Call By Reference

C ++ je flexibilný univerzálny programovací jazyk. Pôvodne ju vytvoril Bjarne Stroustrup, dánsky počítačový vedec, ešte v roku 1985. C ++ podporuje metódy odovzdávania troch parametrov, t.j.e., volať podľa hodnoty, volať podľa adresy a volať podľa referencie. V tomto článku budeme diskutovať o mechanizme volania podľa adresy a volania podľa referencie.

Čo je to funkcia?

Predtým, ako sa pustíme do aktuálnej témy, musíme pochopiť, čo je funkciou v jazyku C++. Mnoho z vás už možno pozná funkcie.

Funkcia je v podstate kúsok kódu, ktorý je možné použiť na vykonanie určitej úlohy. Funkcia sa používa hlavne na zníženie opakujúceho sa kódu v programe C ++. Berie vstup ako parametre a vráti výstup ako návratovú hodnotu. Ak definujeme funkciu raz, v neskoršej časti nášho programu ju môžeme zavolať / použiť viackrát. Takto v programe uložíme veľa opakujúcich sa kódov.

Každý program v C ++ musí mať funkciu „main ()“. Funkcia „main ()“ je vstupným bodom pre program C ++. Okrem funkcie „main ()“ môže programátor definovať toľko funkcií, koľko chcú.

Tu je syntax definície funkcie:

Return_type Function_Name (zoznam vstupných parametrov)

Funkcia v C ++ môže prijať 0 alebo viac vstupných parametrov, zatiaľ čo môže vrátiť iba jednu návratovú hodnotu.

Čo je adresa?

V C ++ (podobne ako v jazyku C) existujú dva typy premenných - premenná údajov a premenná adresy. Premenná adresy sa používa na uloženie adresy inej premennej údajov. Uvažujme napríklad o nasledujúcom útržku kódu:

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

Tu nám prvé tvrdenie hovorí, že premenná „i“ je dátová premenná a uchováva hodnotu 100. V druhom výroku deklarujeme ukazovateľovú premennú, t.e. „Ptr“ a inicializuje ju adresou premennej „i“.

Čo je to Referencia?

Odkaz je ďalšou výkonnou vlastnosťou jazyka C ++. Uvažujme o nasledujúcom útržku kódu:

int a = 200;
int & r = a;

V tomto príklade sme deklarovali celé číslo, t.j.e. „A“ a potom deklaroval referenčnú premennú „r“, ktorá je inicializovaná hodnotou „a“. Referenčná premenná teda nie je nič iné ako alias inej premennej.

Metódy odovzdávania parametrov:

V jazyku C ++ existujú tri typy metód odovzdávania parametrov:

  1. Zavolajte podľa hodnoty / Prejdite podľa hodnoty
  2. Zavolajte na adresu / Prejdite na adresu
  3. Call by reference / Pass by reference

V tomto článku diskutujeme o - výzve podľa adresy a výzve podľa referencie.

Čo je Call By Address / Pass by address?

V prípade metódy Call by address / Pass by address sa argumenty funkcie odovzdávajú ako adresa. Funkcia volajúceho odovzdá adresu parametrov. Ukazovatele premenných sa používajú v definícii funkcie. Pomocou metódy Call by address môže funkcia získať prístup k skutočným parametrom a meniť ich. Uvidíme príklad metódy Call by address v ďalšej časti tohto článku.

Čo je to Call By Reference / Pass by reference?

V metóde Call by reference / Pass by reference sa parametre funkcie odovzdávajú ako referencia. Vo vnútri definície funkcie sú skutočné parametre prístupné pomocou referenčnej premennej.

Príklady:

Teraz, keď chápeme koncept metód odovzdávania parametrov, uvidíme niekoľko ukážkových programov na pochopenie mechanizmu odovzdávania parametrov v C ++:

  1. Príklad-1 - volanie podľa adresy (1)
  2. Príklad-2 - Volať podľa adresy (2)
  3. Príklad-3 - Volanie podľa referencie (1)
  4. Príklad-4 - Volanie podľa referencie (2)

Prvé dva príklady slúžia na vysvetlenie toho, ako funguje metóda Call by address v jazyku C++. Posledné dva príklady slúžia na vysvetlenie koncepcie výzvy podľa odkazu.

Príklad-1 - volanie podľa adresy (1)

V tomto príklade ukážeme mechanizmus volania podľa adresy. Z funkcie „main ()“ voláme funkciu „hello ()“ a odovzdávame adresu „var“. V definícii funkcie dostávame adresu „var“ v premennej ukazovateľa, t.e., „P“. Vo vnútri funkcie ahoj sa hodnota „var“ mení pomocou ukazovateľa na 200. Preto sa hodnota „var“ vo vnútri funkcie „main ()“ po volaní funkcie „hello ()“ mení na 200.

#include
pomocou namespace std;
void ahoj (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;
ahoj (& var);
cout << endl << "Value of var inside main() function = " << var << endl;
návrat 0;

Príklad-2 - Volať podľa adresy (2)

Toto je ďalší príklad metódy volania podľa adresy. V tomto príklade vysvetlíme, ako je možné použiť metódu volania podľa adresy na vyriešenie problému v reálnom živote. Napríklad chceme napísať funkciu na zámenu dvoch premenných. Ak na zámenu dvoch premenných použijeme mechanizmus volania podľa hodnoty, skutočné premenné sa vo funkcii volajúceho nevymenia. V takom prípade je možné použiť metódu volania podľa adresy. V tomto príklade odovzdávame adresu parametrov var_1 (& var_1) a var_2 (& var_2) funkcii „mySwap ()“. Vo vnútri funkcie „mySwap ()“ zamieňame hodnoty týchto dvoch premenných pomocou ukazovateľov. Ako môžete vidieť na nasledujúcom výstupe, skutočná hodnota týchto premenných sa po vykonaní funkcie „mySwap ()“ vo funkcii „main ()“ zamení.

#include
pomocou namespace std;
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;
návrat 0;

Príklad-3 - Volanie podľa referencie (1)

V tomto príklade ukážeme, ako funguje volanie odkazom v jazyku C++. V definícii funkcie „ahoj ()“ sa hodnota prijíma ako referenčná premenná (& p). Pomocou referenčnej premennej (t.j.e., p), sme schopní zmeniť hodnotu skutočného parametra (var) vo vnútri funkcie „main ()“.

#include
pomocou namespace std;
void ahoj (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;
ahoj (var);
cout << endl << "Value of var inside main() function = " << var << endl;
návrat 0;

Príklad-4 - Volanie podľa referencie (2)

Toto je ďalší príklad výzvy podľa referencie. V tomto príklade ukážeme, ako funguje volanie odkazom v C ++ pomocou príkladu z reálneho sveta. Funkcia „mySwap ()“ sa volá z funkcie „main ()“ s nasledujúcimi parametrami - var_1 a var_2. Vo vnútri funkcie „mySwap ()“ dostávame parametre ako referenčné premenné.

#include
pomocou namespace std;
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;
návrat 0;

Záver

Pochopenie metód odovzdávania parametrov v C++ je veľmi zásadný. Programovací jazyk C podporuje funkcie Call by value a Call by address only. C ++ ale podporuje volanie odkazom spolu s predchádzajúcimi dvoma mechanizmami. V tomto článku sme videli niekoľko pracovných príkladov na pochopenie pojmu volanie podľa adresy a volanie podľa referencie. Volanie podľa adresy je veľmi silná a populárna metóda v aplikáciách zabudovaných do domény.

Hry Ako zobraziť počítadlo FPS v hrách Linux
Ako zobraziť počítadlo FPS v hrách Linux
Hranie na systéme Linux získalo veľký tlak, keď spoločnosť Valve v roku 2012 oznámila podporu systému Linux pre klienta Steam a ich hry. Od tej doby s...
Hry Ako sťahovať a prehrávať Sid Meier's Civilization VI v systéme Linux
Ako sťahovať a prehrávať Sid Meier's Civilization VI v systéme Linux
Úvod do hry Civilization 6 predstavuje moderné poňatie klasického konceptu predstaveného v sérii hier Age of Empires. Myšlienka bola dosť jednoduchá; ...
Hry Ako inštalovať a hrať Doom na Linuxe
Ako inštalovať a hrať Doom na Linuxe
Úvod do Doom Séria Doom vznikla v 90. rokoch po vydaní pôvodného Doomu. Bol to okamžitý hit a od tej doby herná séria získala množstvo ocenení a origi...