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

Erstelle eine Funktion, die die Übergabe per Referenz demonstriert, indem sie Variablen direkt über Funktionsparameter verändert. Diese Herausforderung testet dein Verständnis dafür, wie das Symbol & Funktionen ermöglicht, mit den ursprünglichen Variablen statt 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

Dein Programm sollte:

  1. Eine Funktion namens tripleValues erstellen, die drei Ganzzahlparameter als Referenzen entgegennimmt
  2. Innerhalb der Funktion jeden Parameter mit 3 multiplizieren
  3. In der Funktion main die drei Eingabewerte einlesen und in Variablen speichern
  4. Die ursprünglichen Werte vor dem Aufruf der Funktion ausgeben
  5. Die Funktion tripleValues mit den drei Variablen aufrufen
  6. Die geänderten Werte nach dem Funktionsaufruf ausgeben, um zu zeigen, dass sie verändert wurden

Verwende das folgende genaue Ausgabeformat:

Vor dem Funktionsaufruf:

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

Nach dem Funktionsaufruf:

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

Die Funktionssignatur sollte nach jedem Parametertyp das Symbol & verwenden, um die Übergabe per Referenz anzuzeigen: void tripleValues(int& a, int& b, int& c). Dadurch kann die Funktion die übergebenen ursprünglichen Variablen direkt verändern, wodurch der entscheidende Unterschied zwischen der Übergabe per Wert und der Übergabe per Referenz demonstriert wird. Die Variablen in main werden nach dem Funktionsaufruf dauerhaft verändert sein. Dies beweist, dass die Funktion mit den ursprünglichen Speicherstellen und nicht mit Kopien gearbeitet hat.

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

Übe selbstständig: Online-C++-Compiler