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:
- Hívás érték szerint / átadás érték szerint
- Hívás cím szerint / Átadás cím szerint
- 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. példa - Hívás cím szerint (1)
- 2. példa - Hívás cím alapján (2)
- 3. példa - Hívás hivatkozással (1)
- 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.
#includené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.
#includené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.
#includené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.
#includené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.