Menu
Coddy logo textTech

Referenzübergabe

Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy — Lektion 41 von 56.

Wenn Sie Argumente an Funktionen übergeben, erstellt C++ normalerweise Kopien der Werte. Das bedeutet, dass Änderungen innerhalb der Funktion die ursprünglichen Variablen nicht beeinflussen. Pass-by-Reference ändert dieses Verhalten, indem es Funktionen ermöglicht, direkt mit den ursprünglichen Variablen zu arbeiten.

Um per Referenz zu übergeben, fügen Sie das &-Symbol nach dem Parametertyp in Ihrer Funktionsdeklaration hinzu:

void doubleValue(int& number) {
    number = number * 2;  // Modifiziert die ursprüngliche Variable
}

Wenn Sie diese Funktion aufrufen, werden alle Änderungen, die am Parameter innerhalb der Funktion vorgenommen werden, direkt die ursprüngliche Variable ändern, die übergeben wurde. Dies ist besonders nützlich, wenn Sie möchten, dass eine Funktion ihre Argumente ändert oder wenn Sie mit großen Objekten arbeiten, bei denen das Kopieren ineffizient wäre.

Pass-by-Reference eliminiert den Overhead beim Kopieren von Daten, wodurch Ihre Programme schneller und speichereffizienter werden, insbesondere bei komplexen Datenstrukturen wie Vektoren oder Maps.

challenge icon

Aufgabe

Einfach

Erstellen Sie eine Funktion, die das Prinzip der Übergabe per Referenz (Pass by Reference) demonstriert, indem sie Variablen direkt über Funktionsparameter modifiziert. Diese Herausforderung testet Ihr Verständnis dafür, wie das &-Symbol es Funktionen ermöglicht, mit den Originalvariablen anstatt mit Kopien zu arbeiten.

Die folgenden Eingaben werden bereitgestellt:

  • Eine Ganzzahl value1, die die erste Zahl darstellt
  • Eine Ganzzahl value2, die die zweite Zahl darstellt
  • Eine Ganzzahl value3, die die dritte Zahl darstellt

Ihr Programm sollte:

  1. Eine Funktion namens tripleValues erstellen, die drei Ganzzahl-Parameter per Referenz entgegennimmt
  2. Innerhalb der Funktion jeden Parameter mit 3 multiplizieren
  3. In der Hauptfunktion (main) die drei Eingabewerte einlesen und in Variablen speichern
  4. Die ursprünglichen Werte vor dem Funktionsaufruf ausgeben
  5. Die Funktion tripleValues mit den drei Variablen aufrufen
  6. Die modifizierten Werte nach dem Funktionsaufruf ausgeben, um zu zeigen, dass sie geändert wurden

Verwenden Sie das folgende exakte Ausgabeformat:

Vor dem Funktionsaufruf:

Original values: [value1] [value2] [value3]

Nach dem Funktionsaufruf:

Tripled values: [new_value1] [new_value2] [new_value3]

Die Funktionssignatur sollte das &-Symbol nach jedem Parametertyp verwenden, um die Übergabe per Referenz anzuzeigen: void tripleValues(int& a, int& b, int& c). Dies ermöglicht es der Funktion, die ihr übergebenen Originalvariablen direkt zu modifizieren, was den entscheidenden Unterschied zwischen der Übergabe per Wert (Pass by Value) und der Übergabe per Referenz verdeutlicht. Die Variablen in main werden nach dem Funktionsaufruf dauerhaft geändert sein, was beweist, dass die Funktion mit den ursprünglichen Speicheradressen anstatt mit Kopien gearbeitet hat.

Spickzettel

Um in C++ per Referenz zu übergeben, fügen Sie das Symbol & nach dem Parametertyp in Ihrer Funktionsdeklaration hinzu:

void doubleValue(int& number) {
    number = number * 2;  // Modifiziert die ursprüngliche Variable
}

Die Übergabe per Referenz ermöglicht es Funktionen, direkt mit den ursprünglichen Variablen anstatt mit Kopien zu arbeiten. Änderungen, die an Parametern innerhalb der Funktion vorgenommen werden, modifizieren die ursprünglichen Variablen, die übergeben wurden.

Dies eliminiert den Overhead beim Kopieren von Daten, wodurch Programme schneller und speichereffizienter werden, insbesondere bei komplexen Datenstrukturen wie Vektoren oder Maps.

Probier es selbst

#include <iostream>
using namespace std;

// TODO: Erstellen Sie hier die Funktion tripleValues

int main() {
    // Eingabewerte lesen
    int value1, value2, value3;
    cin >> value1 >> value2 >> value3;
    
    // Ursprüngliche Werte ausgeben
    cout << "Original values: " << value1 << " " << value2 << " " << value3 << endl;
    
    // TODO: Rufen Sie hier die Funktion tripleValues auf
    
    // Modifizierte Werte ausgeben
    cout << "Tripled values: " << value1 << " " << value2 << " " << value3 << endl;
    
    return 0;
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf