Verschil tussen oproep op waarde en Oproep via referentie

Belangrijkste verschil - Oproep per waarde versus Oproep op basis van referentie
 

Veel programmeertalen gebruiken functies. Een functie is een verzameling instructies om een ​​specifieke taak uit te voeren. De hoofdcode kan worden onderverdeeld in verschillende functies en ze oproepen. Er zijn twee manieren om een ​​functie op te roepen, zoals call by value en call by reference. In call by value-methode worden kopieën van variabelen in de functie doorgegeven. Als de waarde van de functie verandert, wijzigt deze de oorspronkelijke waarde niet. In een call-by-referentie geeft de verandering van de variabele binnen de functie de oorspronkelijke waarde weer. De belangrijk verschil tussen call by value en call-by-reference is dat, in call by value wordt de kopie van de variabelen aan de functie doorgegeven en bij een oproep door verwijzing worden de adressen van de variabelen doorgegeven aan de functie.  Dit artikel bespreekt het verschil tussen call by value en call by reference.

INHOUD

1. Overzicht en belangrijkste verschil
2. Wat is Call by Value
3. Wat is Call by Reference
4. Overeenkomsten tussen Call by Value en Call by Reference
5. Vergelijking zij aan zij - Oproep per waarde versus Oproep op verwijzing in tabelvorm
6. Samenvatting

Wat is Call by Value?

In call by value worden kopieën van variabelen aan de functie doorgegeven. De functie kan die gekopieerde waarde wijzigen, maar de oorspronkelijke waarde wordt niet gewijzigd. Dit concept is eenvoudig te begrijpen door het wisselen van twee nummers. Raadpleeg het onderstaande C-programma geschreven met behulp van de Code Blocks-omgeving.

Figuur 01: Programma om twee nummers te wisselen

Volgens het onderstaande programma heeft de variabele 'a' de waarde 20 en de variabele 'b' heeft de waarde 30. Bij het aanroepen van de functie swap (a, b) worden deze twee waarden doorgegeven aan de swapfunctie. In de swapfunctie wordt 'a' gekopieerd naar 'x' en 'b' wordt gekopieerd naar 'y'. Nu heeft 'x' de waarde 20 en 'y' heeft de waarde 30. Met behulp van de variabele temp zijn de twee waarden omgewisseld. Bij het afdrukken van de waarde van 'x' en 'y' binnen die functie, geeft de uitvoer 30 aan voor 'x' en 20 voor 'y'. Wanneer de uitvoering van de swapfunctie is voltooid, keert de besturing terug naar de hoofdfunctie. Bij het afdrukken van de waarden 'a' en 'b', in de hoofdfunctie, zijn de resultaten de oorspronkelijke waarden. Ze zijn 20 voor 'a' en 30 voor 'b'. Wijzigingen die met de swapfunctie zijn aangebracht, worden niet weergegeven in het hoofdprogramma.

Figuur 02: Uitvoer van het swappingprogramma

'x' en 'y' binnen de swap-functie hebben de omgewisselde waarden die 30 en 20 zijn, maar die waarden kunnen niet worden gebruikt in het hoofdprogramma. Hoewel 'x' en 'y' omgewisselde waarden hebben, zijn dit lokale variabelen om de functie om te wisselen en kunnen ze niet worden gebruikt door de hoofdfunctie. Om dit probleem te voorkomen, kan bellen door verwijzing worden gebruikt.

Wat is Call By Reference?

In deze methode worden adressen van de variabelen naar de functie verzonden. Raadpleeg het onderstaande C-programma geschreven met behulp van de Code Blocks-omgeving.

Figuur 03: Wisselen van twee nummers met behulp van aanwijzers

Volgens het onderstaande voorbeeld is de waarde van 'a' 20 en de waarde van 'b' is 30. In plaats van kopieën van 'a' en 'b' door te geven, kan de programmeur de adressen van 'a' en 'b verzenden 'gebruik de functie, wissel (& a, & b).

Figuur 04: Uitvoer van het swapprogramma met behulp van aanwijzers

In de swap moet de functie pointers gebruiken omdat adressen worden doorgegeven en die adressen door pointers moeten worden bewaard. Binnen de functie wordt het adres van 'a' gekopieerd naar 'x' en wordt het adres van 'b' gekopieerd naar 'y'. Met behulp van de temp-variabele worden de waarden 'x' en 'y' omgewisseld. In deze aanroep door de referentiemethode, weerspiegelen de veranderingen binnen de swapfunctie in het hoofdprogramma. Het afdrukken van de waarden van 'a' en 'b' geeft in het algemeen de omgewisselde waarden. Nu is de uitvoer van 'a' 30 en 'b' is 20. Omdat de functie het adres van de variabelen neemt, zijn de wijzigingen die in de functie zijn aangebracht van invloed op de oorspronkelijke waarden.

Wat is de overeenkomst tussen oproep op waarde en oproep op referentie?

  • Deze twee methoden worden gebruikt voor het aanroepen van functies / methoden.

Wat is het verschil tussen Oproep op waarde en Oproep op referentie?

Oproep via waarde versus Oproep op referentie

In call by value worden kopieën van variabelen in de functie doorgegeven, zodat wijzigingen die in de functie worden aangebracht, de oorspronkelijke waarde niet wijzigen. Bij aanroepen door middel van verwijzing wordt het adres van de variabelen doorgegeven aan de functie, dus wijzigingen aangebracht voor variabelen binnen de functie, zullen de oorspronkelijke waarde wijzigen.
 Waarde wijziging
In call by value verandert de oorspronkelijke waarde niet. Bij oproep door verwijzing veranderen de oorspronkelijke waarden.

Samenvatting - Oproep op waarde versus Oproep op referentie

Oproep op waarde en bellen op basis van referentie zijn methoden om de functie aan te roepen. Het verschil tussen call by value en call-by-reference is dat in de call-by-waarde de kopieën van variabelen aan de functie worden doorgegeven en dat in de call door verwijzing de adressen van de variabelen aan de functie worden doorgegeven. Het gebruik van oproep op waarde of oproep op basis van referentie is afhankelijk van de uit te voeren taak.

Download de PDF-versie van Call by Value versus Call by Reference

U kunt de PDF-versie van dit artikel downloaden en gebruiken voor offline doeleinden, zoals per citaatnotitie. Download hier de PDF-versie Verschil tussen Oproep op waarde en Oproep op referentie

Referentie:

1.Jaiswal, Haresh. "11 Oproep op waarde versus Oproep op verwijzing." YouTube, YouTube, 24 december 2015. Beschikbaar Hier