Zugriff auf Struct-Member
Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 41 von 63.
Jetzt, da du Struct-Variablen erstellen kannst, musst du lernen, wie du mit den darin gespeicherten Daten arbeitest. Der Punktoperator (.) ist dein Schlüssel zum Zugreifen auf die einzelnen Member einer Struct-Variablen und zu deren Ändern.
Die Syntax für den Zugriff auf Struct-Mitglieder ist unkompliziert:
structVariable.memberNameAnhand unseres Point-Strukturbeispiels kannst du sowohl ihre Member lesen als auch in sie schreiben:
struct Point p1;
// Schreiben in struct-Member
p1.x = 10;
p1.y = 20;
// Lesen von struct-Membern
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);Der Punkt-Operator funktioniert genau wie der Zugriff auf jede andere Variable – Sie können ihn in Zuweisungen, arithmetischen Operationen, Funktionsaufrufen oder überall dort verwenden, wo Sie eine reguläre Variable dieses Typs verwenden würden. Jedes Mitglied verhält sich wie eine unabhängige Variable seines deklarierten Typs, was es Ihnen ermöglicht, die Daten des Structs auf organisierte und intuitive Weise zu manipulieren.
Aufgabe
EinfachErstelle ein C-Programm, das den Zugriff auf Strukturmitglieder und deren Änderung mithilfe des Punktoperators demonstriert. Dein Programm sollte:
- Eine
structnamensCarmit den folgenden Mitgliedern definieren:- Eine Ganzzahl
yearzum Speichern des Herstellungsjahres - Ein Zeichenarray
brandder Größe 20 zum Speichern der Automarke - Eine Ganzzahl
mileagezum Speichern des aktuellen Kilometerstands - Eine Gleitkommazahl
pricezum Speichern des Fahrzeugpreises
- Eine Ganzzahl
- Eine
Car-Variable namensmyCarerstellen - Die folgenden Eingabewerte einlesen und sie mithilfe des Punktoperators den Strukturmitgliedern zuweisen:
- Eine Ganzzahl für das Jahr einlesen und sie
myCar.yearzuweisen - Eine Zeichenkette für die Marke einlesen und sie
myCar.brandzuweisen - Eine Ganzzahl für den Kilometerstand einlesen und sie
myCar.mileagezuweisen - Eine Gleitkommazahl für den Preis einlesen und sie
myCar.pricezuweisen
- Eine Ganzzahl für das Jahr einlesen und sie
- Nach dem Einlesen aller Werte die folgenden Operationen durchführen:
- Den Kilometerstand mithilfe von
myCar.mileage += 1000;um 1000 erhöhen - Den Preis mithilfe von
myCar.price -= 500.0;um 500.0 verringern
- Den Kilometerstand mithilfe von
- Die Fahrzeuginformationen mithilfe des Punktoperators zum Zugriff auf jedes Mitglied in genau diesem Format ausgeben:
Car Details:Year: [year]Brand: [brand]Mileage: [mileage]Price: [price]
Diese Herausforderung testet dein Verständnis des Punktoperators sowohl zum Lesen aus als auch zum Schreiben in Strukturmitglieder. Du übst das Zuweisen von Werten zu Strukturmitgliedern, das Durchführen arithmetischer Operationen mit ihnen und den Zugriff auf sie zur Ausgabe.
Wenn die Eingabe beispielsweise lautet:
2020
Toyota
50000
25000.50Deine Ausgabe sollte lauten:
Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50Probier es selbst
#include <stdio.h>
#include <string.h>
// TODO: Definieren Sie hier das Car-Struct
int main() {
// TODO: Erstellen Sie eine Car-Variable namens myCar
// Eingabewerte lesen
int year;
char brand[20];
int mileage;
float price;
scanf("%d", &year);
scanf("%s", brand);
scanf("%d", &mileage);
scanf("%f", &price);
// TODO: Weisen Sie die Eingabewerte den Struct-Elementen mit dem Punkt-Operator zu
// TODO: Ändern Sie den Kilometerstand und den Preis wie angegeben
// TODO: Geben Sie die Fahrzeugdetails mit dem Punkt-Operator aus
printf("Car Details:\n");
// Geben Sie hier Jahr, Marke, Kilometerstand und Preis aus
return 0;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Zeiger-Grundlagen
Was ist ein Zeiger?Zeiger deklarierenDer Adressoperator (&)Der Dereferenzierungsoperator (*)NULL-ZeigerZusammenfassung: Zeiger-Grundlagen4Projekt: Einfaches Text-Tool
ProjektübersichtZeichen zählen7Strukturen (structs)
Was ist ein Struct?Deklarieren eines StructsErstellen von Struct-VariablenZugriff auf Struct-MemberInitialisieren von StructsZusammenfassung: Studentendaten-Struct2Pointer und Arrays
Array-Namen als PointerArray-Elemente - PointerPointer-ArithmetikPointer vergleichenWiederholung: Array-Durchlauf mit Pointern5Zeiger und Funktionen
Wertübergabe (Pass-by-Value)Zeiger an Funktionen übergebenVariablen über Zeiger ändernEin klassisches Beispiel: SwapArrays an Funktionen übergebenZusammenfassung: Zeiger als Funktionsargumente8Structs und Zeiger
Zeiger auf StructsDer Pfeiloperator (->)Structs per Wert übergebenÜbergabe von Struct-ZeigernDynamische Allokation von StructsZusammenfassung: Struct ändern - Ptr11Finale Wiederholungsaufgaben
Wiederholung: Dynamische String-KonkatenationWiederholung: Array von StructsWiederholung: Wortfrequenz-Zähler3Character-Arrays und Strings
Strings als char-ArraysDer Null-TerminatorString-Eingabe mit scanfVerwendung von strlen()Verwendung von strcpy()Verwendung von strcat()Verwendung von strcmp()Zusammenfassung: Grundlegende String-FunktionenÜbe selbstständig: Online-C-Compiler