C ++

C ++ Call By Address a Call By Reference

C ++ Call By Address a Call By Reference

C ++ je flexibilní univerzální programovací jazyk. To bylo původně vytvořeno Bjarne Stroustrup, dánský počítačový vědec, zpět v roce 1985. C ++ podporuje metody předávání tří parametrů, tj.E., volání podle hodnoty, volání podle adresy a volání podle odkazu. V tomto článku budeme diskutovat o mechanismu volání podle adresy a volání podle odkazu.

Co je to funkce?

Než skočíme do skutečného tématu, musíme pochopit, co je funkce v C++. Mnozí z vás již možná znají funkce.

Funkce je v podstatě část kódu, kterou lze použít k provedení určitého úkolu. Funkce se používá hlavně ke snížení opakujícího se kódu v programu C ++. Bere vstup jako parametry a vrací výstup jako návratovou hodnotu. Pokud definujeme funkci jednou, můžeme ji v pozdější části našeho programu zavolat / použít několikrát. Tímto způsobem v programu uložíme spoustu opakujících se kódů.

Každý program v C ++ musí mít funkci „main ()“. Funkce „main ()“ je vstupním bodem pro program C ++. Kromě funkce „main ()“ může programátor definovat libovolný počet funkcí.

Zde je syntaxe definování funkce:

Return_type Function_Name (seznam vstupních parametrů)

Funkce v C ++ může přijímat 0 nebo více počtu vstupních parametrů, zatímco může vracet pouze jednu návratovou hodnotu.

Co je adresa?

V C ++ existují dva typy proměnných (podobně jako v jazyce C) - proměnná dat a proměnná adresy. Proměnná adresy se používá k uložení adresy jiné datové proměnné. Zvažme například následující fragment kódu:

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

Zde nám první příkaz říká, že proměnná „i“ je datová proměnná a ukládá hodnotu 100. Ve druhém prohlášení deklarujeme proměnnou ukazatele, tj.E. „Ptr“ a jeho inicializace adresou proměnné „i“.

Co je to Reference?

Odkaz je další výkonnou funkcí jazyka C ++. Zvažme následující fragment kódu:

int a = 200;
int & r = a;

V tomto příkladu jsme deklarovali celé číslo, tj.E. „A“ a poté deklaroval referenční proměnnou „r“, která je inicializována hodnotou „a“. Referenční proměnná tedy není nic jiného než alias jiné proměnné.

Metody předávání parametrů:

V jazyce C ++ existují tři typy metod předávání parametrů:

  1. Volání podle hodnoty / předávání podle hodnoty
  2. Volejte podle adresy / předat adresu
  3. Call by reference / Pass by reference

V tomto článku diskutujeme o - výzvě podle adresy a výzvě podle odkazu.

Co je Call By Address / Pass by address?

V případě metody Call by address / Pass by address se argumenty funkce předávají jako adresa. Funkce volajícího předá adresu parametrů. Proměnné ukazatele se používají v definici funkce. Pomocí metody Call by address může funkce přistupovat ke skutečným parametrům a měnit je. V následující části tohoto článku uvidíme příklad metody volání podle adresy.

Co je Call By Reference / Pass by reference?

V metodě Call by reference / Pass by reference jsou parametry funkce předány jako reference. Uvnitř definice funkce jsou skutečné parametry přístupné pomocí referenční proměnné.

Příklady:

Nyní, protože chápeme koncept metod předávání parametrů, uvidíme několik ukázkových programů, které pochopí mechanismus předávání parametrů v C ++:

  1. Příklad 1 - Volání podle adresy (1)
  2. Příklad 2 - Volání podle adresy (2)
  3. Příklad 3 - Volání podle doporučení (1)
  4. Příklad 4 - Call by Reference (2)

První dva příklady jsou uvedeny k vysvětlení, jak metoda Call by address funguje v C++. Poslední dva příklady mají vysvětlit koncept Call by reference.

Příklad 1 - Volání podle adresy (1)

V tomto příkladu ukážeme mechanismus volání podle adresy. Z funkce „main ()“ voláme funkci „hello ()“ a předáváme adresu „var“. V definici funkce dostáváme adresu „var“ v proměnné ukazatele, tj.E., „P“. Uvnitř funkce ahoj se hodnota „var“ mění pomocí ukazatele na 200. Proto se po volání funkce „hello ()“ hodnota „var“ uvnitř funkce „main ()“ mění na 200.

#zahrnout
pomocí jmenného prostoru 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;

Příklad 2 - Volání podle adresy (2)

Toto je další příklad metody volání podle adresy. V tomto příkladu vysvětlíme, jak lze metodu volání podle adresy použít k řešení problému v reálném životě. Například chceme napsat funkci pro výměnu dvou proměnných. Pokud použijeme mechanismus volání podle hodnoty k výměně dvou proměnných, skutečné proměnné se ve funkci volajícího nevymění. V takovém scénáři lze použít metodu volání podle adresy. V tomto příkladu předáváme adresu funkce var_1 (& var_1) a var_2 (& var_2) funkci „mySwap ()“. Uvnitř funkce „mySwap ()“ zaměňujeme hodnoty těchto dvou proměnných pomocí ukazatelů. Jak vidíte na následujícím výstupu, skutečná hodnota těchto proměnných se po provedení funkce „mySwap ()“ ve funkci „main ()“ zaměňuje.

#zahrnout
pomocí jmenného prostoru 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;

Příklad 3 - Volání podle doporučení (1)

V tomto příkladu ukážeme, jak funguje volání odkazem v jazyce C++. V definici funkce „hello ()“ je hodnota přijímána jako referenční proměnná (& p). Pomocí referenční proměnné (tj.E., p), jsme schopni změnit hodnotu skutečného parametru (var) uvnitř funkce „main ()“.

#zahrnout
pomocí jmenného prostoru 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;

Příklad 4 - Call by Reference (2)

Toto je další příklad volání odkazem. V tomto příkladu ukážeme, jak funguje volání odkazem v C ++ pomocí příkladu z reálného světa. Funkce „mySwap ()“ je volána z funkce „main ()“ s následujícími parametry - var_1 a var_2. Uvnitř funkce „mySwap ()“ přijímáme parametry jako referenční proměnné.

#zahrnout
pomocí jmenného prostoru 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ávěr

Porozumění metod předávání parametrů v C++ je velmi zásadní. Programovací jazyk C podporuje Call by value a Call by address only. Ale C ++ podporuje volání odkazem spolu s předchozími dvěma mechanismy. V tomto článku jsme viděli několik pracovních příkladů, abychom porozuměli konceptu Call by address a Call by reference. Volání podle adresy je velmi silná a populární metoda v aplikacích integrovaných domén.

Střední tlačítko myši nefunguje ve Windows 10
The prostřední tlačítko myši pomáhá procházet dlouhé webové stránky a obrazovky se spoustou dat. Pokud se to zastaví, budete nakonec používat klávesni...
Jak změnit levé a pravé tlačítko myši na počítači se systémem Windows 10
Je úplnou normou, že všechna zařízení počítačových myší jsou ergonomicky navržena pro praváky. K dispozici jsou však myší zařízení, která jsou speciál...
Emulace kliknutí myší vznášením pomocí myši Clickless Mouse ve Windows 10
Používání myši nebo klávesnice ve špatném držení těla nadměrného používání může mít za následek mnoho zdravotních problémů, včetně napětí, syndromu ka...