Menu
Coddy logo textTech

Der Pfeiloperator (->)

Teil des Abschnitts Logik & Ablauf 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 Pfeiloperator macht deinen Code übersichtlicher und leichter lesbar, insbesondere bei der Arbeit mit komplexen Datenstrukturen. Er ist die Standardmethode, um in der C-Programmierung über Zeiger auf Strukturmitglieder zuzugreifen.

challenge icon

Aufgabe

Einfach

Erstelle ein C-Programm, das die Verwendung des Pfeiloperators für den Zugriff auf Struct-Mitglieder über Zeiger demonstriert. Dein Programm sollte:

  1. Eine struct namens Book mit den folgenden Mitgliedern definieren:
    • Eine Ganzzahl id zum Speichern der Buch-ID
    • Ein Zeichen-Array title der Größe 40 zum Speichern des Buchtitels
    • Ein Zeichen-Array author der Größe 30 zum Speichern des Namens des Autors
    • Eine Gleitkommazahl price zum Speichern des Buchpreises
    • Eine Ganzzahl pages zum Speichern der Seitenanzahl
  2. In der main-Funktion eine Book-Variable namens myBook erstellen
  3. Einen Zeiger auf eine Book-Struktur namens bookPtr deklarieren
  4. Die Adresse von myBook bookPtr zuweisen
  5. Die folgenden Eingabewerte einlesen und sie mithilfe des Pfeiloperators über den Zeiger den Struct-Mitgliedern zuweisen:
    • Eine Ganzzahl für die ID einlesen und sie mithilfe von bookPtr->id zuweisen
    • Eine Zeichenfolge für den Titel einlesen und sie mithilfe von bookPtr->title zuweisen
    • Eine Zeichenfolge für den Autor einlesen und sie mithilfe von bookPtr->author zuweisen
    • Eine Gleitkommazahl für den Preis einlesen und sie mithilfe von bookPtr->price zuweisen
    • Eine Ganzzahl für die Seiten einlesen und sie mithilfe von bookPtr->pages zuweisen
  6. Nach dem Einlesen aller Werte die folgenden Operationen mithilfe des Pfeiloperators durchführen:
    • Einen Rabatt von 10 % auf den Preis anwenden: bookPtr->price = bookPtr->price * 0.9;
    • 50 Bonusseiten hinzufügen: bookPtr->pages += 50;
  7. Die Buchinformationen mithilfe des Pfeiloperators für den Zugriff auf jedes Mitglied im folgenden exakten Format ausgeben:
    • Book Information:
    • ID: [id]
    • Title: [title]
    • Author: [author]
    • Price: [price]
    • Pages: [pages]
  8. Den Preis pro Seite mithilfe des Pfeiloperators berechnen und im folgenden Format ausgeben: Price per page: [price_per_page]

Diese Aufgabe testet dein Verständnis des Pfeiloperators für den Zugriff auf Struct-Mitglieder über Zeiger. Du übst die Verwendung der ptr->member-Syntax sowohl zum Lesen aus als auch zum Schreiben in Struct-Mitglieder und demonstrierst dabei, dass sie äquivalent zu (*ptr).member, aber wesentlich praktischer und besser lesbar ist.

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 Logik & Ablauf

Übe selbstständig: Online-C-Compiler