Menu
Coddy logo textTech

Der Pfeiloperator (->)

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

Beim Arbeiten mit Zeigern auf Strukturen erfordert der Zugriff auf die Struktur-Member eine spezielle Syntax. Obwohl man den Dereferenzierungsoperator und die Punktnotation zusammen verwenden könnte, bietet C einen bequemeren Operator speziell für diesen Zweck an: den Pfeiloperator (->).

Der Pfeil-Operator ermöglicht es Ihnen, auf Struktur-Member über einen Pointer auf eine saubere und lesbare Weise zuzugreifen:

ptr->member

Dies ist äquivalent zum Schreiben von (*ptr).member, aber viel prägnanter.

So funktioniert es in der Praxis:

struct Point p1 = {10, 20};
struct Point *ptr = &p1;

// Verwendung des Pfeil-Operators
printf("x = %d, y = %d\n", ptr->x, ptr->y);

// Dies ist dasselbe wie:
printf("x = %d, y = %d\n", (*ptr).x, (*ptr).y);

Der Pfeil-Operator macht Ihren Code übersichtlicher und lesbarer, insbesondere bei der Arbeit mit komplexen Datenstrukturen. Er ist die Standardmethode, um in der C-Programmierung über Pointer auf struct-Member zuzugreifen.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein C-Programm, das die Verwendung des Pfeiloperators zum Zugriff auf Struct-Member über Pointer demonstriert. Ihr Programm sollte Folgendes tun:

  1. Definieren Sie ein struct namens Book mit den folgenden Membern:
    • Ein Integer id zum Speichern der Buch-ID
    • Ein Zeichen-Array (char array) title mit der Größe 40 zum Speichern des Buchtitels
    • Ein Zeichen-Array (char array) author mit der Größe 30 zum Speichern des Autorennamens
    • Ein Float price zum Speichern des Buchpreises
    • Ein Integer pages zum Speichern der Seitenanzahl
  2. Erstellen Sie in der main-Funktion eine Book-Variable namens myBook
  3. Deklarieren Sie einen Pointer auf ein Book-Struct namens bookPtr
  4. Weisen Sie die Adresse von myBook dem bookPtr zu
  5. Lesen Sie die folgenden Eingabewerte ein und weisen Sie diese den Struct-Membern unter Verwendung des Pfeiloperators über den Pointer zu:
    • Lesen Sie einen Integer für die ID und weisen Sie ihn mit bookPtr->id zu
    • Lesen Sie einen String für den Titel und weisen Sie ihn mit bookPtr->title zu
    • Lesen Sie einen String für den Autor und weisen Sie ihn mit bookPtr->author zu
    • Lesen Sie einen Float für den Preis und weisen Sie ihn mit bookPtr->price zu
    • Lesen Sie einen Integer für die Seiten und weisen Sie ihn mit bookPtr->pages zu
  6. Führen Sie nach dem Einlesen aller Werte die folgenden Operationen mit dem Pfeiloperator durch:
    • Wenden Sie einen Rabatt von 10% auf den Preis an: bookPtr->price = bookPtr->price * 0.9;
    • Fügen Sie 50 Bonus-Seiten hinzu: bookPtr->pages += 50;
  7. Geben Sie die Buchinformationen unter Verwendung des Pfeiloperators für den Zugriff auf jedes Member in genau diesem Format aus:
    • Book Information:
    • ID: [id]
    • Title: [title]
    • Author: [author]
    • Price: [price]
    • Pages: [pages]
  8. Berechnen und drucken Sie den Preis pro Seite unter Verwendung des Pfeiloperators im Format: Price per page: [price_per_page]

Diese Herausforderung testet Ihr Verständnis des Pfeiloperators für den Zugriff auf Struct-Member über Pointer. Sie üben die Verwendung der ptr->member-Syntax sowohl für das Lesen von als auch für das Schreiben in Struct-Member und demonstrieren damit, dass dies äquivalent zu (*ptr).member ist, aber viel praktischer und lesbarer.

Probier es selbst

#include <stdio.h>
#include <string.h>

// TODO: Definiere hier die Book-Struktur

int main() {
    // TODO: Erstelle eine Book-Variable namens myBook
    
    // TODO: Deklariere einen Pointer auf Book namens bookPtr
    
    // TODO: Weise die Adresse von myBook bookPtr zu
    
    // Eingabewerte lesen
    int id;
    char title[40];
    char author[30];
    float price;
    int pages;
    
    scanf("%d", &id);
    scanf("%s", title);
    scanf("%s", author);
    scanf("%f", &price);
    scanf("%d", &pages);
    
    // TODO: Weise die Eingabewerte den struct-Membern unter Verwendung des Pfeil-Operators zu
    
    // TODO: Wende 10% Rabatt auf price unter Verwendung des Pfeil-Operators an
    
    // TODO: Füge 50 Bonusseiten unter Verwendung des Pfeil-Operators hinzu
    
    // TODO: Gib die Buchinformationen unter Verwendung des Pfeil-Operators aus
    
    // TODO: Berechne und gib den Preis pro Seite unter Verwendung des Pfeil-Operators 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