Zugriff auf Struct-Member
Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 41 von 63.
Nachdem du struct-Variablen erstellen kannst, musst du lernen, mit den darin gespeicherten Daten zu arbeiten. Der Punktoperator (.) ist der Schlüssel zum Zugriff auf die einzelnen Mitglieder einer struct-Variablen und zu deren Änderung.
Die Syntax für den Zugriff auf Struct-Mitglieder ist einfach:
structVariable.memberNameMit unserem Beispiel für die Struktur Point kannst du sowohl ihre Member lesen als auch in sie schreiben:
struct Point p1;
// Schreiben in Strukturmitglieder
p1.x = 10;
p1.y = 20;
// Lesen aus Strukturmitgliedern
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);Der Punktoperator funktioniert genauso wie der Zugriff auf jede andere Variable – du kannst ihn in Zuweisungen, arithmetischen Operationen, Funktionsaufrufen oder überall dort verwenden, wo du eine gewöhnliche Variable dieses Typs verwenden würdest. Jedes Mitglied verhält sich wie eine unabhängige Variable seines deklarierten Typs, sodass du die Daten der Struktur auf organisierte und intuitive Weise bearbeiten kannst.
Aufgabe
EinfachErstelle ein C-Programm, das den Zugriff auf und die Änderung von struct-Mitgliedern mit dem Punktoperator demonstriert. Dein Programm soll:
- Ein
structnamensCarmit den folgenden Mitgliedern definieren:- Eine Ganzzahl
year, um das Herstellungsjahr zu speichern - Ein Zeichenarray
brandmit der Größe 20, um die Automarke zu speichern - Eine Ganzzahl
mileage, um den aktuellen Kilometerstand zu speichern - Eine Gleitkommazahl
price, um den Preis des Autos zu speichern
- Eine Ganzzahl
- Eine
Car-Variable namensmyCarerstellen - Die folgenden Eingabewerte einlesen und sie den struct-Mitgliedern mithilfe des Punktoperators zuweisen:
- Eine Ganzzahl für das Jahr einlesen und sie
myCar.yearzuweisen
strcpy() nach myCar.brandkopieren (einem Array kann mit=kein Wert zugewiesen werden) - Eine Ganzzahl für das Jahr einlesen und sie
- Eine Ganzzahl für den Kilometerstand einlesen und sie
myCar.mileagezuweisen - Eine Gleitkommazahl für den Preis einlesen und sie
myCar.pricezuweisen - Nach dem Einlesen aller Werte die folgenden Operationen ausfü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 ausgeben und dabei mit dem Punktoperator auf jedes Mitglied zugreifen. Verwende genau dieses Format:
Car Details:Year: [year]Brand: [brand]Mileage: [mileage]Price: [price]
Bei dieser Herausforderung kannst du dein Verständnis des Punktoperators für das Lesen und Schreiben von struct-Mitgliedern unter Beweis stellen. Du übst, struct-Mitgliedern Werte zuzuweisen, arithmetische Operationen mit ihnen durchzuführen und für die Ausgabe auf sie zuzugreifen.
Wenn die Eingabe zum Beispiel so aussieht:
2020
Toyota
50000
25000.50Deine Ausgabe sollte so aussehen:
Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50Probier es selbst
#include <stdio.h>
#include <string.h>
// TODO: Definiere hier die Car-Struktur
int main() {
// TODO: Erstelle eine Car-Variable namens myCar
// Eingabewerte einlesen
int year;
char brand[20];
int mileage;
float price;
scanf("%d", &year);
scanf("%s", brand);
scanf("%d", &mileage);
scanf("%f", &price);
// TODO: Weise die Eingabewerte den Strukturmitgliedern mit dem Punktoperator zu
// TODO: Ändere Kilometerstand und Preis wie angegeben
// TODO: Gib die Fahrzeugdetails mit dem Punktoperator aus
printf("Car Details:\n");
// Gib 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