Mnoho programovacích jazykov používa funkcie. Funkcia je skupina príkazov na vykonanie konkrétnej úlohy. Hlavný kód je možné rozdeliť do niekoľkých funkcií a vyvolať ich. Existujú dva spôsoby vyvolania funkcie, ako napríklad volanie podľa hodnoty a volanie odkazom. Pri metóde volania podľa hodnoty sa do funkcie odovzdávajú kópie premenných. Ak dôjde k zmene hodnoty funkcie, nezmení sa pôvodná hodnota. Vo výzve odkazom zmeny premennej vo funkcii odrážajú pôvodnú hodnotu. kľúčový rozdiel medzi volaním podľa hodnoty a referenčným volaním je to, pri volaní podľa hodnoty sa kópia premenných odovzdáva funkcii a pri volaní odkazom sa adresy premenných odovzdávajú funkcii. V tomto článku sa diskutuje o rozdieloch medzi hodnotou hovoru a hodnotou odkazom.
1. Prehľad a kľúčový rozdiel
2. Čo je to volanie podľa hodnoty
3. Čo je to Call by Reference
4. Podobnosti medzi hodnotou hovoru a referenciou
5. Porovnanie bok po boku - Výzva podľa hodnoty a výzva odkazom v tabuľkovej forme
6. Zhrnutie
Pri volaní podľa hodnoty sa do funkcie odovzdávajú kópie premenných. Funkcia môže túto kopírovanú hodnotu zmeniť, ale nemení pôvodnú hodnotu. Tento koncept možno ľahko pochopiť zamenením dvoch číselných programov. Pozri nižšie uvedený program C napísaný v prostredí Code Blocks.
Obrázok 01: Program na výmenu dvoch čísel
Podľa programu uvedeného nižšie má premenná 'a' hodnotu 20 a premenná 'b' má hodnotu 30. Pri volaní funkcie swap (a, b) sa tieto dve hodnoty odovzdajú do funkcie swap. Vo funkcii swap sa „a“ skopíruje do „x“ a „b“ sa skopíruje do „y“. Teraz má 'x' hodnotu 20 a 'y' má hodnotu 30. Použitím premennej temp sa tieto dve hodnoty zamenia. Pri tlači hodnôt „x“ a „y“ vo vnútri tejto swapovej funkcie bude výstup dať 30 pre „x“ a 20 pre „y“. Po ukončení vykonávania funkcie swap sa riadenie vráti späť na hlavnú funkciu. Pri tlači hodnôt „a“ a „b“ v hlavnej funkcii budú výsledkom pôvodné hodnoty. Sú 20 pre „a“ a 30 pre „b“. Zmeny vykonané pomocou funkcie výmeny sa neodrážajú v hlavnom programe.
Obrázok 02: Výstup swapovacieho programu
'x' a 'y' vo funkcii swap majú vymenené hodnoty, ktoré sú 30 a 20, ale tieto hodnoty sa nemôžu použiť v hlavnom programe. Aj keď 'x' a 'y' majú zamenené hodnoty, jedná sa o lokálne premenné na swapovú funkciu a hlavná funkcia ich nemôže získať. Ak sa chcete tomuto problému vyhnúť, je možné použiť odkaz odkazom.
Pri tejto metóde sa do premennej posielajú adresy premenných. Pozri nižšie uvedený program C napísaný v prostredí Code Blocks.
Obrázok 03: Výmena dvoch čísel pomocou ukazovateľov
Podľa nižšie uvedeného príkladu je hodnota „a“ 20 a hodnota „b“ je 30. Namiesto odovzdávania kópií „a“ a „b“ môže programátor odosielať adresy „a“ a „b“ 'pomocou funkcie, zámena (& a, & b).
Obrázok 04: Výstup swapovacieho programu pomocou ukazovateľov
Pri výmene by funkcia mala používať ukazovatele, pretože adresy sú odovzdávané a tieto adresy by mali byť držané ukazovateľmi. Vo funkcii sa skopíruje adresa „a“ na „x“ a adresa „b“ sa skopíruje na „y“. Použitím premennej temp sú hodnoty „x“ a „y“ zamenené. Pri tomto volaní referenčnou metódou sa zmeny vo funkcii swap odrážajú v hlavnom programe. Vytlačením hodnôt „a“ a „b“ v hlavnom okne získate zamenené hodnoty. Teraz je výstup 'a' 30 a 'b' je 20. Pretože funkcia berie adresu premenných, zmeny vykonané vo funkcii ovplyvnia pôvodné hodnoty..
Hodnota hovoru podľa referencie | |
Pri volaní podľa hodnoty sa kópie premenných prenášajú do funkcie, takže zmeny vykonané vo funkcii nezmenia pôvodnú hodnotu. | Vo výzve odkazom je adresa premenných odovzdaná funkcii, takže zmeny vykonané pre premenné vo funkcii modifikujú pôvodnú hodnotu.. |
Úprava hodnoty | |
Pri volaní podľa hodnoty sa pôvodná hodnota nemení. | Pri volaní odkazom sa pôvodné hodnoty menia. |
Volanie podľa hodnoty a volanie odkazom sú spôsoby vyvolania funkcie. Rozdiel medzi volaním podľa hodnoty a volaním podľa odkazu je ten, že vo volaní podľa hodnoty sú kópie premenných odovzdávané funkcii a vo volaní odkazom sú adresy premenných odovzdávané funkcii. Použitie volania podľa hodnoty alebo volania odkazom závisí od úlohy, ktorú treba vykonať.
Môžete si stiahnuť verziu tohto článku vo formáte PDF a použiť ju na účely offline podľa citácie. Stiahnite si PDF verziu tu Rozdiel medzi hodnotou podľa hodnoty a výzvou podľa referencie
1.Jaiswal, Haresh. „11 hovorov podľa hodnoty v. Referencie.“ Ty trúbka, YouTube, 24. decembra 2015. K dispozícii tu