Modulelessen (2/2)
Geef waarde en referentie door
Wanneer u in C++ een argument aan een functie doorgeeft, zijn er twee manieren om dit te doen: op waarde of op verwijzing.
Het begrijpen van dit onderscheid is de sleutel tot zowel de correctheid van het programma als de optimalisatie van de prestaties.
Waarde doorgeven (kopie)
Standaard geeft C++ argumenten door op waarde. Dit betekent dat er een kopie van de gegevens in het geheugen wordt gemaakt. Elke wijziging die binnen de functie wordt aangebracht, heeft geen invloed op de oorspronkelijke variabele daarbuiten:
#include <iostream>
void increment(int n) {
n++; // Modifies only the local copy
}
int main() {
int x = 5;
increment(x);
std::cout << x << std::endl; // Prints 5, x remains unchanged!
return 0;
}Pass-by-referentie (&)
Als u wilt dat de functie de oorspronkelijke variabele kan wijzigen, of als u wilt voorkomen dat grote objecten (zoals lange tekenreeksen of vectoren) worden gekopieerd, moet u pass by reference gebruiken.
Een referentie wordt gedeclareerd door het & symbool toe te voegen na het parametertype:
#include <iostream>
void incrementRef(int& n) {
n++; // Modifies the original variable directly
}
int main() {
int x = 5;
incrementRef(x);
std::cout << x << std::endl; // Prints 6!
return 0;
}De parameter int& n is geen kopie, maar een alias (een directe verwijzing) naar de variabele x die wordt doorgegeven bij het aanroepen van de functie.
Probeer het zelf
Definieer een functie met de naam doubleNumber met een void-retourtype dat een verwijzing naar een geheel getal n neemt (met int& n) en de waarde ervan verdubbelt (n = n * 2). Noem het in het algemeen, geef de variabele val door, geïnitialiseerd op 10, en druk vervolgens val af.
Toon hint
De functiehandtekening gebruikt het teken `&`na het type om een verwijzing aan te geven:`void doubleNumber(int& n)`.
Oplossing beschikbaar na 3 pogingen
Definieer een functie met de naam swap die twee gehele getallen a en b (int& a, int& b) nodig heeft en hun waarden verwisselt met behulp van een tijdelijke variabele temp. Noem het in main om x en y om te wisselen, en druk ze vervolgens af.
Toon hint
Gebruik `int temp = a; een = b; b = temp;` om de waarden om te wisselen.
Oplossing beschikbaar na 3 pogingen