Laatst bijgewerkt op 27 juli 2020
werkelijke argumenten #
Argumenten die in de functie-aanroep worden genoemd, staan bekend als het werkelijke argument. Bijvoorbeeld:
func1(12, 23);
hier 12
en 23
zijn werkelijke argumenten.
Actuele argumenten kunnen constant zijn, variabelen, expressies enz.
12 |
func1(a, b); // here actual arguments are variablefunc1(a + b, b + a); // here actual arguments are expression |
Formele argumenten #
Argumenten die in de definitie van de functie worden genoemd, worden formele argumenten genoemd. Formele argumenten zijn vergelijkbaar met lokale variabelen in de functie. Net als lokale variabelen worden formele argumenten vernietigd wanneer de functie eindigt.
1234 |
int factorial(int n){ // write logic here} |
Hier n
is het formele argument. Dingen om te onthouden over werkelijke en formele argumenten.
- Orde, aantal en type van de werkelijke argumenten in de functie-aanroep moeten overeenkomen met de formele argumenten van de functie.
- Indien er een type-mismatch is tussen werkelijke en formele argumenten, zal de compiler proberen het type van de werkelijke argumenten om te zetten in formele argumenten als dit legaal is, anders zal een afvalwaarde worden doorgegeven aan het formele argument.
- Veranderingen in het formele argument hebben geen invloed op de werkelijke argumenten.
Het volgende programma demonstreert dit gedrag.
1 2 3 4 5 6 7 8 910111213141516171819202122232425 |
Hier is de waarde van variabele x
10
voordat de functie func_1()
wordt aangeroepen, nadat func_1()
is aangeroepen, is de waarde van x
binnen main()
nog steeds 10
. De veranderingen die in de functie func_1()
zijn aangebracht, hebben geen invloed op de waarde van x
. Dit gebeurt omdat wanneer we waarden doorgeven aan de functies, een kopie van de waarde wordt gemaakt en die kopie wordt doorgegeven aan de formele argumenten. Formele argumenten werken dus op een kopie van de oorspronkelijke waarde, niet op de oorspronkelijke waarde zelf, vandaar dat wijzigingen in func_1()
niet terug te vinden zijn in main()
. Dit proces staat bekend als het doorgeven van argumenten met behulp van Call by Value, we zullen dit concept in meer detail bespreken in de komende hoofdstukken.