Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Argumenten Doorgeven via Waarde/Pointer/Referentie | Specificatie van Functieargumenten
C++-Functies

Argumenten Doorgeven via Waarde/Pointer/Referentie

Veeg om het menu te tonen

Doorgeven op waarde

Variabelen die binnen een functie zijn aangemaakt, zijn alleen binnen die functie toegankelijk. Deze regel geldt ook bij het doorgeven van argumenten. Parameters in de functiedeclaratie hebben lokale scope en worden op waarde doorgegeven, wat betekent dat hun waarden worden gekopieerd naar de functie en opgeslagen in aparte variabelen (zoals het lenen van een bibliotheekboek in plaats van het origineel meenemen).

main.cpp

main.cpp

1234567891011121314151617181920
#include <iostream> // Function that takes an argument by value void modify(int num) { // Modify the parameter (local copy of the argument) num = num * 2; } int main() { int number = 5; std::cout << "Before function call: " << number << std::endl; // Call the function and pass 'number' by value modify(number); // Varibale in the main function remains unchanged std::cout << "After function call: " << number << std::endl; }

Doorgeven via pointer

Argumenten op waarde doorgeven is niet altijd efficiënt. Het kopiëren van waarden gebruikt extra geheugen, en soms moet een functie de originele variabele direct aanpassen. In zulke gevallen is het beter om de variabele via een pointer door te geven, wat betekent dat het geheugenadres in plaats van de waarde wordt verzonden. Dit gebeurt met de pointer-operator (*) in de functieparameters.

main.cpp

main.cpp

1234567891011121314151617181920212223
#include <iostream> // Function that takes an argument using pointer void modify(int* p_num) { // Modify the value at the memory address pointed by `p_num` // '*' is used to extract the value from the address (pointer) *p_num = (*p_num) * 2; std::cout << "Inside function: " << *p_num << std::endl; } int main() { int number = 5; std::cout << "Before function call: " << number << std::endl; // Call the function and pass the address of 'number' using a pointer // '&' is used to get an address of the variable modify(&number); // 'number' in the main function is modified through the pointer std::cout << "After function call: " << number << std::endl; }

Doorgeven via referentie

Doorgeven via referentie betekent dat een functie directe toegang krijgt tot het geheugen van een variabele, waardoor het mogelijk is de oorspronkelijke waarde te wijzigen zonder de dereference-operator (*) te gebruiken.

Doorgeven via referentie maakt gebruik van de &-operator in de functiedeclaratie. Dit lijkt op doorgeven via pointer, maar met twee belangrijke verschillen:

  • Het is niet nodig om * te gebruiken om toegang te krijgen tot de variabele binnen de functie.
  • Het is niet nodig om & te gebruiken bij het aanroepen van de functie, alleen in de declaratie.
main.cpp

main.cpp

1234567891011121314151617181920
#include <iostream> // Function that takes an argument by reference void modify(int& num) { // Modify the parameter directly (no need for dereferencing) num = num * 2; } int main() { int number = 5; std::cout << "Before function call: " << number << std::endl; // Call the function and pass `number` by reference modify(number); // `number` in the main function is modified directly through the reference std::cout << "After function call: " << number << std::endl; }
question mark

Welke uitspraak beschrijft het verschil tussen doorgeven via waarde, pointer en referentie het beste?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 2

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 2. Hoofdstuk 2
some-alt