C ++

C ++ hívás cím szerint és hívás hivatkozás szerint

C ++ hívás cím szerint és hívás hivatkozás szerint

A C ++ egy rugalmas általános célú programozási nyelv. Eredetileg Bjarne Stroustrup, dán informatikus, még 1985-ben. A C ++ háromparaméteres továbbítási módszereket támogat, azaz.e., hívás érték, hívás cím és hívás hivatkozás alapján. Ebben a cikkben a címenkénti hívásról és a referenciahívás mechanizmusáról fogunk tárgyalni.

Mi a függvény?

Mielőtt rátérnénk a tényleges témára, meg kell értenünk, hogy mi a funkció a C-ben++. Lehet, hogy sokan ismerik a funkciókat.

A függvény alapvetően egy kódrészlet, amely felhasználható egy bizonyos feladat végrehajtására. Egy funkciót elsősorban az ismétlődő kód csökkentésére használnak egy C ++ programban. A bemenetet paraméterként veszi fel, és a kimenetet visszatérési értékként adja vissza. Ha egyszer definiáljuk a függvényt, akkor programunk későbbi részében többször meghívhatjuk / használhatjuk. Így sok ismétlődő kódot mentünk el a programban.

Minden C ++ programnak rendelkeznie kell a „main ()” funkcióval. A „main ()” függvény a C ++ program belépési pontja. A „main ()” függvényen kívül a programozó annyi függvényt határozhat meg, amennyit csak akar.

Itt található a függvény meghatározásának szintaxisa:

Return_type Funkciónév (Bemeneti paraméterlista)

A C ++ függvény 0 vagy több bemeneti paramétert képes elfogadni, míg csak egy visszatérési értéket adhat vissza.

Mi az a cím?

Kétféle változó létezik a C ++ nyelven (hasonlóan a C nyelvhez) - Adatváltozó és Címváltozó. A címváltozó egy másik adatváltozó címének tárolására szolgál. Vegyük például a következő kódrészletet:

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

Itt az első állítás elmondja, hogy az „i” változó adatváltozó, és a 100 értéket tárolja. A második állításban egy mutató változót deklarálunk, azaz.e. „Ptr”, és inicializálja az „i” változó címével.

Mi az a referencia?

A referencia a C ++ nyelv másik hatékony jellemzője. Vegyük fontolóra a következő kódrészletet:

int a = 200;
int & r = a;

Ebben a példában egész számot deklaráltunk, azaz.e. „A”, majd deklarálta az „r” referencia változót, amelyet az „a” értékkel inicializálunk. Tehát a referencia változó nem más, mint egy másik változó álneve.

Paraméter továbbítási módszerek:

A C ++ nyelven háromféle paraméterátviteli módszer létezik:

  1. Hívás érték szerint / átadás érték szerint
  2. Hívás cím szerint / Átadás cím szerint
  3. Hívás referenciával / átadás referenciával

Ebben a cikkben a - Hívás címen és a Hívás referenciával kapcsolatban tárgyalunk.

Mi a Call By Address / Pass by address?

A Call by address / Call by address módszer esetén a funkció argumentumokat címként továbbítjuk. A hívó funkció átadja a paraméterek címét. Mutatóváltozókat használunk a függvénydefinícióban. A Call by address módszer segítségével a funkció elérheti és módosíthatja az aktuális paramétereket. A cikk későbbi részében láthatunk egy példát a Hívás cím szerint módszerre.

Mi az a hívás hivatkozással / átadás hivatkozással?

A Hívás referenciával / Átadás referenciával módszerben a funkció paramétereit referenciaként adjuk át. A függvénydefiníción belül a tényleges paraméterekhez a referencia változóval férhet hozzá.

Példák:

Most, hogy megértettük a paraméterátadási módszerek fogalmát, számos példaprogramot fogunk látni a paraméterátadási mechanizmus megértéséhez a C ++ nyelven:

  1. 1. példa - Hívás cím szerint (1)
  2. 2. példa - Hívás cím alapján (2)
  3. 3. példa - Hívás hivatkozással (1)
  4. 4. példa - Hívás hivatkozással (2)

Az első két példa arra szolgál, hogy elmagyarázzuk, hogyan működik a Call by address módszer C-ben++. Az utolsó két példa a felhívás hivatkozási koncepcióval történő magyarázata.

1. példa - Hívás cím szerint (1)

Ebben a példában bemutatjuk a hívás cím szerinti mechanizmusát. A „main ()” függvényből meghívjuk a „hello ()” függvényt és átadjuk a „var” címét. A függvénydefinícióban egy „var” címet kapunk egy mutatóváltozóban, azaz.e., „P”. A hello függvényben a „var” értéke 200-ra változik a mutató segítségével. Ezért a “var” értéke 200-ra változik a “main ()” függvényen belül a “hello ()” függvényhívás után.

#include
névtér használata 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;
szia (& var);
cout << endl << "Value of var inside main() function = " << var << endl;
visszatér 0;

2. példa - Hívás cím alapján (2)

Ez egy másik példa a hívás cím szerint módszerre. Ebben a példában azt fogjuk elmagyarázni, hogy a hívás cím alapján módszerrel hogyan lehet megoldani a valós problémákat. Például egy függvényt akarunk írni két változó cseréjére. Ha az értékenkénti hívás mechanizmust használjuk két változó cseréjére, akkor a tényleges változókat nem cseréljük fel a hívó függvényben. A call by address módszer használható ilyen esetekben. Ebben a példában mind a var_1 (& var_1), mind a var_2 (& var_2) címet átadjuk a „mySwap ()” függvénynek. A „mySwap ()” függvényben ennek a két változónak az értékeit cseréljük ki a mutatók segítségével. Amint az alábbi kimenetből látható, ezeknek a változóknak a tényleges értéke felcserélődik a „main ()” függvényben, miután a „mySwap ()” funkció végrehajtásra került.

#include
névtér használata 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;
visszatér 0;

3. példa - Hívás hivatkozással (1)

Ebben a példában bemutatjuk, hogyan működik a referenciával történő hívás a C-ben++. A „hello ()” függvénydefinícióban az érték referencia változóként érkezik (& p). A referencia változó segítségével (i.e., p), képesek vagyunk megváltoztatni a tényleges (var) paraméter értékét a „main ()” függvényen belül.

#include
névtér használata 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;
szia (var);
cout << endl << "Value of var inside main() function = " << var << endl;
visszatér 0;

4. példa - Hívás hivatkozással (2)

Ez egy másik példa a referenciahívásra. Ebben a példában egy valós példa segítségével bemutatjuk, hogyan működik a referenciahívás a C ++ nyelven. A „mySwap ()” függvényt a „main ()” függvényből hívják meg a következő paraméterekkel - var_1 és var_2. A „mySwap ()” függvényen belül a paramétereket referenciaváltozókként kapjuk meg.

#include
névtér használata 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;
visszatér 0;

Következtetés

A paraméter-átadási módszerek megértése C++ nagyon fontos. A C programozási nyelv csak a Hívás érték és a Hívás cím alapján támogat. De a C ++ az előző két mechanizmussal együtt hivatkozással támogatja a Hívást. Ebben a cikkben számos működő példát láthattunk, hogy megértsük a címenkénti hívás és a hivatkozás szerinti hívás fogalmát. A címenkénti hívás nagyon hatékony és népszerű módszer a beágyazott tartományi alkalmazásokban.

OpenTTD bemutató
Az OpenTTD az egyik legnépszerűbb üzleti szimulációs játék. Ebben a játékban létre kell hoznia egy csodálatos szállítási vállalkozást. Azonban kezdete...
SuperTuxKart Linuxhoz
A SuperTuxKart egy nagyszerű cím, amelynek célja, hogy ingyenesen hozza el a Mario Kart élményét Linux rendszerén. Elég kihívást jelentő és szórakozta...
Csata a Wesnoth bemutatóért
A Battle for Wesnoth az egyik legnépszerűbb nyílt forráskódú stratégiai játék, amelyet jelenleg játszhatsz. Ez a játék nem csak nagyon hosszú ideje fe...