Lektionen des Moduls (2/2)
Wertübergabe und Referenzübergabe
In C++ gibt es zwei Hauptwege, um ein Argument an eine Funktion zu übergeben: per Wert (by value) oder per Referenz (by reference).
Dieser Unterschied ist sowohl für die Korrektheit des Programms als auch für die Leistungsoptimierung von grundlegender Bedeutung.
Übergabe per Wert (Kopie)
Standardmäßig übergibt C++ Argumente per Wert. Dies bedeutet, dass eine Kopie der Daten im Speicher erstellt wird. Jede innerhalb der Funktion vorgenommene Änderung hat keinen Einfluss auf die ursprüngliche Variable außerhalb:
#include <iostream>
void increment(int n) {
n++; // Modifica solo la copia locale
}
int main() {
int x = 5;
increment(x);
std::cout << x << std::endl; // Stampa 5, x non è cambiata!
return 0;
}
Übergabe per Referenz (&)
Wenn Sie möchten, dass die Funktion die ursprüngliche Variable ändern kann, oder wenn Sie das Kopieren großer Objekte (wie langer Zeichenketten oder Vektoren) vermeiden möchten, müssen Sie die Übergabe per Referenz verwenden.
Eine Referenz wird deklariert, indem das Symbol & nach dem Parametertyp hinzugefügt wird:
#include <iostream>
void incrementRef(int& n) {
n++; // Modifica direttamente la variabile originale
}
int main() {
int x = 5;
incrementRef(x);
std::cout << x << std::endl; // Stampa 6!
return 0;
}
Der Parameter int& n ist keine Kopie, sondern ein Alias (ein direkter Verweis) auf die beim Aufruf übergebene Variable x.
Probier es aus
Definiere eine Funktion doubleNumber mit dem Rückgabetyp void, die eine Referenz auf eine Ganzzahl n nimmt (unter Verwendung von int& n) und deren Wert verdoppelt (n = n * 2). Rufe sie im main auf und übergib ihr die mit 10 initialisierte Variable val, und gib dann val aus.
Hinweis anzeigen
Die Signatur der Funktion verwendet das Zeichen `&`nach dem Typ, um eine Referenz anzuzeigen:`void doubleNumber(int& n)`.
Lösung nach 3 Versuchen verfügbar
Definiere eine Funktion swap, die zwei Referenzen auf Ganzzahlen a und b nimmt (int& a, int& b) und deren Werte mithilfe einer temporären Variable temp vertauscht. Rufe sie im main auf, um x und y zu vertauschen, und gib sie anschließend aus.
Hinweis anzeigen
Verwende `int temp = a; a = b; b = temp;` um die Werte zu vertauschen.
Lösung nach 3 Versuchen verfügbar