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
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
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
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; }
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.