Menu
Coddy logo textTech

Der Dereferenzierungsoperator (*)

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

Nachdem Sie nun wissen, wie man Adressen in Pointern speichert, müssen Sie lernen, wie Sie auf den tatsächlichen Wert zugreifen, der an dieser Speicheradresse gespeichert ist. Der Dereferenzierungsoperator (*) ermöglicht es Ihnen, dem Pointer zu „folgen“, um den Wert zu erhalten, auf den er zeigt.

Wenn Sie den *-Operator vor eine Zeigervariable setzen, greift er auf den Wert zu, der an der Speicheradresse gespeichert ist, die der Zeiger hält. Stellen Sie es sich so vor, als würden Sie sagen: „Gib mir das, was sich in dem Raum an dieser Adresse befindet.“

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // Gibt 25 aus - den Wert von age

Es ist wichtig zu verstehen, dass das Sternchen (*) in C zwei verschiedene Bedeutungen hat. Bei der Deklaration eines Pointers wie int *ptr; gibt das Sternchen an, dass ptr ein Pointer ist. Wenn es mit einem bestehenden Pointer wie *ptr verwendet wird, dereferenziert es den Pointer, um auf den Wert zuzugreifen, auf den er zeigt.

Der Dereferenzierungsoperator ist essenziell, da er den Zeiger-Zyklus vervollständigt: Sie können eine Adresse in einem Zeiger mit & speichern und dann den Wert an dieser Adresse mit * abrufen. Dies ermöglicht es Ihnen, indirekt auf Variablen über deren Speicheradressen zuzugreifen und diese zu ändern.

challenge icon

Aufgabe

Einfach

Schreiben Sie ein C-Programm, das den vollständigen Pointer-Workflow demonstriert: Deklaration, Adresszuweisung und Dereferenzierung. Ihr Programm sollte:

  1. Eine Integer-Variable namens value deklarieren und sie mit dem Wert 75 initialisieren
  2. Eine Float-Variable namens price deklarieren und sie mit dem Wert 19.99 initialisieren
  3. Einen Pointer auf einen Integer namens value_ptr deklarieren
  4. Einen Pointer auf einen Float namens price_ptr deklarieren
  5. Den Adressoperator verwenden, um die Adresse von value an value_ptr zuzuweisen
  6. Den Adressoperator verwenden, um die Adresse von price an price_ptr zuzuweisen
  7. Den Dereferenzierungsoperator verwenden, um den Wert von value über value_ptr auszugeben
  8. Den Dereferenzierungsoperator verwenden, um den Wert von price über price_ptr mit genau 2 Dezimalstellen auszugeben

Ihre Ausgabe sollte die dereferenzierten Werte im folgenden Format anzeigen:

Value through pointer: 75
Price through pointer: 19.99

Die Herausforderung testet Ihr Verständnis dafür, wie der Dereferenzierungsoperator den Wert der ursprünglichen Variablen abruft, indem er der im Pointer gespeicherten Adresse folgt.

Spickzettel

Der Dereferenzierungsoperator (*) ermöglicht es Ihnen, auf den Wert zuzugreifen, der an der Speicheradresse gespeichert ist, die ein Pointer hält.

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // Gibt 25 aus - den Wert von age

Das Sternchen (*) hat in C zwei verschiedene Bedeutungen:

  • In Deklarationen wie int *ptr; - gibt an, dass ptr ein Pointer ist
  • Bei bestehenden Pointern wie *ptr - dereferenziert den Pointer, um auf den Wert zuzugreifen, auf den er zeigt

Der Dereferenzierungsoperator vervollständigt den Pointer-Zyklus: Speichern Sie eine Adresse mit & und rufen Sie dann den Wert an dieser Adresse mit * ab.

Probier es selbst

#include <stdio.h>

int main() {
    // TODO: Schreiben Sie Ihren Code hier
    // 1. Deklarieren und initialisieren Sie die Variablen
    // 2. Deklarieren Sie die Pointer
    // 3. Weisen Sie den Pointern Adressen zu
    // 4. Geben Sie die dereferenzierten Werte 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