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

C Call Address



A C ++ rugalmas, általános célú programozási nyelv. Eredetileg készítette Bjarne Stroustrup, egy dán informatikus, még 1985-ben. A C ++ támogatja a három paraméteres átadási módszereket, azaz hívást érték szerint, hívást címenként és hívást hivatkozás alapján. Ebben a cikkben a hívás címenként és a hívás hivatkozási mechanizmusról fogunk tárgyalni.

Mi az a funkció?

Mielőtt belevágnánk az aktuális témába, meg kell értenünk, hogy mi a funkció a C ++ nyelven. Sokan már ismerik a funkciókat.







A függvény alapvetően egy kódrészlet, amellyel egy adott feladat végrehajtható. Egy funkciót elsősorban az ismétlődő kód csökkentésére használnak egy C ++ programban. Bevitelt vesz paraméterekként, és visszatérési értékként adja vissza a kimenetet. Ha egyszer definiáljuk a függvényt, akkor többször is meghívhatjuk/használhatjuk a programunk későbbi részében. Így sok ismétlődő kódot menthetünk a programba.



Minden C ++ programnak rendelkeznie kell a fő () függvénnyel. A fő () függvény a C ++ program belépési pontja. A fő () függvényen kívül a programozó annyi funkciót definiálhat, amennyit csak akar.



Íme a függvény meghatározásának szintaxisa:





Return_type Function_Name(Bemeneti paraméterek listája)

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

Mi az a Cím?

A C ++ nyelvben kétféle változó létezik (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én= 100;
int *ptr= &én;

Itt az első utasítás azt mondja, hogy az i változó adatváltozó, és a 100 értéket tárolja. A második utasításban mutatóváltozót, azaz ptr -t deklarálunk, és az i változó címével inicializáljuk.

Mi az a referencia?

A referencia a C ++ nyelv másik erős tulajdonsága. Tekintsük a következő kódrészletet:

intnak nek= 200;
int &r=nak nek;

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

Paraméterátadási módszerek:

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

  1. Hívás érték szerint / Átadás érték szerint
  2. Hívás cím szerint / Pass by address
  3. Hívás hivatkozásból / Átadás hivatkozásból

Ebben a cikkben a - Hívás címenként és Hívás hivatkozás szerint - témákról beszélünk.

Mi a hívás cím szerint / bérlet cím szerint?

A Hívás címenként / Átadás cím szerint módszer esetén a függvény argumentumai címként kerülnek továbbításra. A hívó funkció átadja a paraméterek címét. A mutatóváltozókat a függvénydefiníció határozza meg. A Call by address módszer segítségével a funkció hozzáférhet az aktuális paraméterekhez és módosíthatja azokat. Látni fogunk egy példát a Hívás címenként módszerre a cikk későbbi szakaszában.

Mi a Call By Reference / Pass by Reference?

A Hívás hivatkozással / Átadás referencia módszerben a funkcióparamétereket hivatkozásként adja át. A függvénydefinícióban az aktuális paraméterek a referenciaváltozó segítségével érhetők el.

Példák:

Most, hogy megértettük a paraméterátviteli módszerek fogalmát, számos példaprogramot fogunk látni a paraméterátviteli 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 szerint (2)
  3. 3. példa-Hívás hivatkozás alapján (1)
  4. 4. példa-Hívás hivatkozás alapján (2)

Az első két példa bemutatja, hogyan működik a Hívás címen módszer C ++ nyelven. Az utolsó két példa a felhívás hivatkozáson alapuló magyarázatát tartalmazza.

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

Ebben a példában a hívás cím szerinti mechanizmust mutatjuk be. A fő () függvényből hívjuk a hello () függvényt, és átadjuk a var címét. A függvénydefinícióban a var címét kapjuk egy mutatóváltozóban, azaz p. A hello függvényen belül 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.

#befoglalni
segítségével névtérórák;

üresHelló(int *o)
{
költség <<endl<< 'Inside hello () függvény:' <<endl;
költség << 'Értéke *p =' << *o<<endl;
*o= 200;
költség << 'Értéke *p =' << *o<<endl;
költség << 'Kilépés a hello () függvényből.' <<endl;
}

intfő-()
{
intahol= 100;
költség << 'A var értéke a main () függvényben =' <<ahol<<endl;

Helló(&ahol);

költség <<endl<< 'A var értéke a main () függvényben =' <<ahol<<endl;

Visszatérés 0;
}

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

Ez egy másik példa a hívás címenként módszerre. Ebben a példában elmagyarázzuk, hogyan lehet a hívás címenként módszerrel valós problémát megoldani. Például egy függvényt szeretnénk írni két változó felcserélésére. Ha a hívás érték szerinti mechanizmust használjuk két változó felcserélésére, akkor a tényleges változók nem cserélődnek a hívó funkcióban. A hívás címenként módszer alkalmazható ilyen esetben. Ebben a példában mind a var_1 (& var_1), mind a var_2 (& var_2) címét átadjuk a mySwap () függvénynek. A mySwap () függvényben e két változó értékét felcseréljük a mutatók segítségével. Amint az alábbi kimeneten látható, ezeknek a változóknak a tényleges értéke felcserélődik a main () függvényben a mySwap () függvény végrehajtása után.

#befoglalni
segítségével névtérórák;

üresmySwap(int *vptr_1,int *vptr_2)
{
inttemp_var;
temp_var= *vptr_1;
*vptr_1= *vptr_2;
*vptr_2=temp_var;
}

intfő-()
{
intvar_1= 100;
intvar_2= 300;

költség << 'A mySwap () függvény meghívása előtt a var_1 értéke:' <<var_1<<endl;
költség << 'A mySwap () függvény meghívása előtt a var_2 értéke:' <<var_2<<endl<<endl;

költség << 'A mySwap () függvény hívása - Hívás cím szerint.' <<endl<<endl;
mySwap(&var_1,&var_2);

költség << 'A mySwap () függvény meghívása után a var_1 értéke:' <<var_1<<endl;
költség << 'A mySwap () függvény meghívása után a var_2 értéke:' <<var_2<<endl;

Visszatérés 0;
}

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

Ebben a példában bemutatjuk, hogyan működik a referenciahívás a C ++ nyelven. A hello () függvénydefinícióban az érték referenciaváltozóként (& p) érkezik. A referenciaváltozó (azaz p) segítségével képesek vagyunk megváltoztatni a tényleges paraméter (var) értékét a main () függvényen belül.

#befoglalni
segítségével névtérórák;

üresHelló(int &o)
{
költség <<endl<< 'Inside hello () függvény:' <<endl;
költség << 'P értéke' <<o<<endl;
o= 200;
költség << 'P értéke' <<o<<endl;
költség << 'Kilépés a hello () függvényből.' <<endl;
}

intfő-()
{
intahol= 100;
költség << 'A var értéke a main () függvényben =' <<ahol<<endl;

Helló(ahol);

költség <<endl<< 'A var értéke a main () függvényben =' <<ahol<<endl;

Visszatérés 0;
}

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

Ez egy másik példa a hivatkozott hívásra. Ebben a példában egy valós példa segítségével bemutatjuk, hogyan működik a hívás hivatkozással 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ényben a paramétereket referenciaváltozóként kapjuk.

#befoglalni
segítségével névtérórák;

üresmySwap(int &vref_1,int &vref_2)
{
inttemp_var;
temp_var=vref_1;
vref_1=vref_2;
vref_2=temp_var;
}

intfő-()
{
intvar_1= 100;
intvar_2= 300;

költség << 'A mySwap () függvény meghívása előtt a var_1 értéke:' <<var_1<<endl;
költség << 'A mySwap () függvény meghívása előtt a var_2 értéke:' <<var_2<<endl<<endl;

költség << 'A mySwap () függvény hívása - Hívás hivatkozás alapján.' <<endl<<endl;
mySwap(var_1, var_2);

költség << 'A mySwap () függvény meghívása után a var_1 értéke:' <<var_1<<endl;
költség << 'A mySwap () függvény meghívása után a var_2 értéke:' <<var_2<<endl;

Visszatérés 0;
}

Következtetés

A paraméterátviteli módszerek megértése C ++ nagyon döntő. A C programozási nyelv csak a hívás érték szerint és a hívás cím szerint támogatja. A C ++ azonban az előző két mechanizmussal együtt támogatja a hivatkozást. Ebben a cikkben számos példát láthattunk a Hívás címenként és a Hívás hivatkozás alapján fogalom megértésére. A cím szerinti hívás nagyon hatékony és népszerű módszer a beágyazott tartományi alkalmazásokban.