Menu
Coddy logo textTech

Variablen über Zeiger ändern

Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 27 von 63.

Jetzt kannst du die wahre Leistungsfähigkeit von Zeigern nutzen: die ursprüngliche Variable durch eine Funktion ändern. Wenn du einen Zeiger an eine Funktion übergibst, kann die Funktion den Dereferenzierungsoperator verwenden, um den an dieser Speicheradresse gespeicherten Wert zu ändern.

Innerhalb der Funktion dereferenzierst du den Zeiger mit dem Operator *, um auf den Wert der ursprünglichen Variablen zuzugreifen und ihn zu ändern. Diese Technik wird Übergabe per Referenz genannt, weil du eine Referenz auf den Speicherort der Variablen übergibst.

void doubleValue(int *ptr) {
    *ptr = *ptr * 2;  // Dereference to modify the original value
}

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

Der Schlüssel besteht darin, *ptr auf der linken Seite der Zuweisung zu verwenden, um den Wert an der Speicheradresse zu ändern, die der Zeiger enthält. Dadurch können Funktionen Variablen der aufrufenden Funktion dauerhaft ändern, was leistungsfähige Programmiermöglichkeiten eröffnet, die die Wertübergabe einfach nicht erreichen kann.

challenge icon

Aufgabe

Einfach

Schreibe ein C-Programm, das das Ändern von Variablen durch Zeiger demonstriert, indem es eine Funktion erstellt, die den Wert einer Ganzzahl verdreifacht.

Dein Programm sollte:

  1. Eine Funktion namens tripleValue erstellen, die einen Zeiger 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 Funktion main eine Ganzzahlvariable namens number deklarieren und 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 mithilfe des Adressoperators übergeben
  7. Nach dem Funktionsaufruf den Endwert von number im Format Final value: [value] ausgeben

Deine Ausgabe sollte zeigen, dass die Funktion die ursprüngliche Variable erfolgreich über den Zeiger ändert:

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

Diese Herausforderung demonstriert die Leistungsfähigkeit der Übergabe per Referenz mithilfe von Zeigern, wobei die Funktion die ursprüngliche Variable dauerhaft ändern kann, indem sie den Zeiger dereferenziert und den Wert an dieser Speicherstelle ändert.

Probier es selbst

#include <stdio.h>

// TODO: Schreibe hier deine tripleValue-Funktion

int main() {
    // TODO: Schreibe hier deinen Code
    // Deklariere und initialisiere die number-Variable
    // Print the original value
    // 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 Logik & Ablauf

Übe selbstständig: Online-C-Compiler