Bellen op referentie versus bellen op waarde: verschil en vergelijking

Functies kunnen op twee manieren worden aangeroepen in een programma. De ene methode is via call-by-referentie en de volgende methode is via call-by-value. Deze methoden kunnen worden onderscheiden op basis van het type waarden dat aan de parameters wordt doorgegeven.

De parameters die daarin worden gebruikt, worden werkelijke parameters genoemd. Ze worden gebruikt in veel programmeertalen zoals C, C++ en Java.

Key Takeaways

  1. Call by reference geeft het geheugenadres van een variabele door aan een functie, terwijl call by value een kopie van de waarde van de variabele verzendt.
  2. Met de call by reference hebben wijzigingen die binnen een functie zijn aangebracht rechtstreeks invloed op de oorspronkelijke variabele, terwijl call by value de oorspronkelijke variabele ongewijzigd laat.
  3. Call by reference is geheugenefficiënter dan call by value, maar het kan tot onbedoelde bijwerkingen leiden als het niet zorgvuldig wordt beheerd.

Bellen op referentie versus bellen op waarde

Witte azijn, gebruikt voor schoonmaken of koken, wordt gemaakt door gedistilleerde alcohol te fermenteren, wat resulteert in een heldere, scherp smakende vloeistof. Appelciderazijn wordt gemaakt door de suikers van appels te fermenteren en heeft een mildere, lichtzoete smaak, die wordt gebruikt in saladedressings en marinades.

Bellen op referentie versus bellen op waarde

Call by reference-methode wordt gebruikt om toegang te krijgen tot het eigenlijke argument dat de functieaanroep is. Dit betekent dat wijzigingen in de parameter pas worden aangebracht nadat het argument is doorgegeven.

Het gebruikt dezelfde geheugentoewijzing die wordt gebruikt in daadwerkelijke parameters. Wanneer het een functie aanroept, wordt in plaats van de variabelen te kopiëren, het adres zelf gebruikt in de aanroep door verwijzingen.

Call by value is een subroutine die de werkelijke gegevens doorgeeft van de parameters die in de subroutine worden gebruikt.

Bij deze methode geeft u, wanneer u een functie aanroept, de waarde door aan de variabele van de argumenten in de aangeroepen functie, zodat de aangeroepen functie op de waarde werkt. Deze wijziging wordt niet weerspiegeld in de aangeroepen functie.

Vergelijkingstabel

Parameters van vergelijking:Bel op referentieBel op waarde
VeranderlijkVariabele wordt doorgegeven.Kopie van de variabele wordt doorgegeven.
Variabele waardeAangebrachte wijzigingen hebben invloed op de functie buiten.Aangebrachte wijzigingen hebben geen invloed op de functie buiten.
Originele waardeHet is gewijzigd.Het is niet gewijzigd.
VeiligheidEchte argumenten zijn niet veilig.Echte argumenten zijn veilig.
DefinitieHet gebruikt zelf een variabele om door te geven.Het gebruikt de kopie van de variabele om door te geven.

Wat is Call by Reference?

Het is een methode die wordt gebruikt voor het doorgeven van argumenten aan een functie. Om het adres van de variabelen op te slaan, worden pointervariabelen gebruikt. Bij deze methode zijn feitelijke argumenten niet veilig.

Lees ook:  WhatsApp versus Instagram: verschil en vergelijking

Er kunnen per ongeluk wijzigingen worden aangebracht. Het is belangrijk om zorgvuldig met de argumentbewerkingen om te gaan. Het helpt om per ongeluk aangebrachte wijzigingen te voorkomen.

Het zal geen dubbele gegevens creëren omdat het slechts één waarde bevat, zodat het kan besparen geheugen ruimte. Als een persoon de code leest, kunnen ze niet vinden of de waarden in deze code zijn gewijzigd.

Bij deze methode is een levenslange garantie een groot probleem. Het wordt een gevaar als je werkt met multi-threaded programma's en lambda's. Om call by reference aan te geven, moet u een adres doorgeven.

Call by reference als het gaat om C-programmering. Het heeft rechtstreeks toegang tot de gegevensitems en voert de functies erop uit. Maar je moet voorzichtig zijn, want er zijn aanwijzingen bij betrokken.

Als u de specifieke status van het gegevensitem kent, bel dan op referentiemethode id perfect. Het wijzigen van een kopie van de gegevens zal niets nuttigs doen

Call by reference heeft gevaren die call by value niet heeft. U kunt per ongeluk een waarde opnieuw toewijzen aan een aanwijzer en deze in het geheugen kwijtraken.

Wat is Call by Value?

Bij deze methode hebben wijzigingen in de functie van de parameter geen enkel effect op het argument. Swap-programma fungeert als het beste voorbeeld van een call-by-value-programma.

Er wordt uitgelegd dat er geen wijzigingen in de waarde worden aangebracht, ook al zijn ze binnen de functie gewijzigd. In Java, betekent de call-by-value-methode het aanroepen van de methode met zijn parameter als waarde.

Bij deze methode worden de parameters op verschillende geheugenlocaties opgeslagen. Als u een wijziging aanbrengt binnen de locatie, wordt de daadwerkelijke parameter van de beller niet beïnvloed.

Deze methode is het beste omdat de oorspronkelijke waarde niet wordt gewijzigd. Maar u kunt geen wijzigingen aanbrengen in de werkelijke variabelen. Werkelijke argumenten zijn bij deze methode veilig, omdat u niet per ongeluk wijzigingen kunt aanbrengen. 

Lees ook:  Irobot Roomba 690 versus 960: verschil en vergelijking

Deze methode Bewaren de gegevens omdat het de oorspronkelijke variabele niet verandert. Hier zijn argumenten variabelen. Het wijzigen van een variabele in een functielichaam is niet direct. Complexe uitdrukkingen kunnen soms als argumenten werken.

Het is niet geheugenefficiënt omdat er twee kopieën worden gemaakt voor dezelfde variabele. Als de gegevensomvang groot is, zal de call-by-value-methode deze niet adresseren. In dat geval moeten programmeurs kiezen voor de call-by-referentiemethode. 

Belangrijkste verschillen tussen Call by Reference en Call by Value

  1. De oorspronkelijke waarde wordt gewijzigd in de aanroep door verwijzing. Aan de andere kant wordt in de call by value de oorspronkelijke waarde niet gewijzigd.
  2. Call by reference wordt ondersteund door programmeertalen, maar is niet standaard. Aan de andere kant werkt call by value standaard in programmeertalen.
  3. In Call by reference hebben eventuele wijzigingen in de variabele ook invloed op de variabele buiten de functie. Aan de andere kant, in de call by value, hebben eventuele wijzigingen in de variabele geen invloed op de variabele buiten de functie.
  4. Call by reference stelt u in staat wijzigingen aan te brengen in de waarde van de variabele. Aan de andere kant kunt u met call-by-value geen wijzigingen aanbrengen.
  5. Bij call by reference wordt een adres van de waarde doorgegeven. Maar in de call by reference wordt een kopie van de waarde doorgegeven. 
Referenties
  1. https://www.jstor.org/stable/3857812
  2. ftp://prog.vub.ac.be/education/EMOOSE/ReuseSlides/merge-papers/Jackson&al1994-semanticDiff.pdf

Laatst bijgewerkt: 22 juli 2023

stip 1
Een verzoek?

Ik heb zoveel moeite gestoken in het schrijven van deze blogpost om jou van waarde te kunnen zijn. Het zal erg nuttig voor mij zijn, als je overweegt het te delen op sociale media of met je vrienden/familie. DELEN IS ️

Laat een bericht achter

Dit artikel bewaren voor later? Klik op het hartje rechtsonder om op te slaan in je eigen artikelenbox!