Menu
Coddy logo textTech

Variablen über Zeiger ändern

Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 27 von 63.

Jetzt können Sie die wahre Macht von Pointern nutzen: die ursprüngliche Variable über eine Funktion zu verändern. Wenn Sie einen Pointer an eine Funktion übergeben, kann die Funktion den Dereferenzierungsoperator verwenden, um den an dieser Speicheradresse gespeicherten Wert zu ändern.

Innerhalb der Funktion dereferenzieren Sie den Zeiger mit dem *-Operator, um auf den Wert der ursprünglichen Variablen zuzugreifen und diesen zu ändern. Diese Technik wird als Pass-by-Reference bezeichnet, da Sie eine Referenz auf den Speicherort der Variablen übergeben.

void doubleValue(int *ptr) {
    *ptr = *ptr * 2;  // Dereferenzieren, um den ursprünglichen Wert zu ändern
}

int main() {
    int x = 5;
    doubleValue(&x);  // Die Adresse von x übergeben
    // x ist jetzt 10!
    return 0;
}

Der Schlüssel liegt in der Verwendung von *ptr auf der linken Seite der Zuweisung, um den Wert an der Speicheradresse zu ändern, die der Pointer hält. Dies ermöglicht es Funktionen, Variablen der aufrufenden Funktion dauerhaft zu ändern, was leistungsstarke Programmiermöglichkeiten eröffnet, die mit pass-by-value einfach nicht erreicht werden können.

challenge icon

Aufgabe

Einfach

Schreiben Sie ein C-Programm, das das Ändern von Variablen durch Pointer demonstriert, indem Sie eine Funktion erstellen, die den Wert einer Ganzzahl verdreifacht.

Ihr Programm sollte:

  1. Eine Funktion namens tripleValue erstellen, die einen Pointer auf eine Ganzzahl als Parameter entgegennimmt
  2. Innerhalb der Funktion tripleValue den Dereferenzierungsoperator verwenden, um den Wert an der Speicheradresse mit 3 zu multiplizieren
  3. Innerhalb der Funktion tripleValue den neuen Wert im Format Value tripled to: [value] ausgeben
  4. In der main-Funktion eine Ganzzahlvariable namens number deklarieren und sie mit dem Wert 8 initialisieren
  5. Den ursprünglichen Wert im Format Original value: [value] ausgeben
  6. Die Funktion tripleValue aufrufen und die Adresse der Variable number mit dem Adressoperator übergeben
  7. Nach dem Funktionsaufruf den endgültigen Wert von number im Format Final value: [value] ausgeben

Ihre Ausgabe sollte zeigen, dass die Funktion die ursprüngliche Variable erfolgreich über den Pointer modifiziert:

Original value: 8
Value tripled to: 24
Final value: 24

Diese Herausforderung demonstriert die Stärke von Pass-by-Reference unter Verwendung von Pointern, wobei die Funktion die ursprüngliche Variable dauerhaft modifizieren kann, indem sie den Pointer dereferenziert und den Wert an diesem Speicherort ändert.

Probier es selbst

#include <stdio.h>

// TODO: Schreibe deine tripleValue Funktion hier

int main() {
    // TODO: Schreibe deinen Code hier
    // Deklariere und initialisiere die number Variable
    // Gib den ursprünglichen Wert aus
    // Rufe die tripleValue Funktion auf
    // Gib den endgültigen Wert aus
    
    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 Logic & Flow