Zugriff auf Struct-Member
Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 41 von 63.
Nachdem Sie nun Struct-Variablen erstellen können, müssen Sie lernen, wie Sie mit den darin gespeicherten Daten arbeiten. Der Punktoperator (.) ist Ihr Schlüssel zum Zugriff auf und zur Änderung der einzelnen Member einer Struct-Variable.
Die Syntax für den Zugriff auf Struct-Member ist unkompliziert:
structVariable.memberNameUnter Verwendung unseres Point-struct-Beispiels können Sie dessen Member sowohl lesen als auch beschreiben:
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
EinfachErstellen Sie ein C-Programm, das den Zugriff auf und das Ändern von Struct-Elementen mithilfe des Punktoperators demonstriert. Ihr Programm sollte:
- Definieren Sie ein
structnamensCarmit den folgenden Elementen:- Ein Integer
year, um das Baujahr zu speichern - Ein Zeichen-Array (char array)
brandmit der Größe 20, um die Automarke zu speichern - Ein Integer
mileage, um den aktuellen Kilometerstand zu speichern - Ein Float
price, um den Preis des Autos zu speichern
- Ein Integer
- Erstellen Sie eine
Car-Variable namensmyCar - Lesen Sie die folgenden Eingabewerte ein und weisen Sie diese den Struct-Elementen mithilfe des Punktoperators zu:
- Lesen Sie einen Integer für das Jahr und weisen Sie ihn
myCar.yearzu - Lesen Sie einen String für die Marke und weisen Sie ihn
myCar.brandzu - Lesen Sie einen Integer für den Kilometerstand und weisen Sie ihn
myCar.mileagezu - Lesen Sie einen Float für den Preis und weisen Sie ihn
myCar.pricezu
- Lesen Sie einen Integer für das Jahr und weisen Sie ihn
- Führen Sie nach dem Einlesen aller Werte die folgenden Operationen aus:
- Erhöhen Sie den Kilometerstand um 1000 mit
myCar.mileage += 1000; - Verringern Sie den Preis um 500.0 mit
myCar.price -= 500.0;
- Erhöhen Sie den Kilometerstand um 1000 mit
- Geben Sie die Informationen des Autos unter Verwendung des Punktoperators für den Zugriff auf jedes Element in genau diesem Format aus:
Car Details:Year: [year]Brand: [brand]Mileage: [mileage]Price: [price]
Diese Herausforderung testet Ihr Verständnis des Punktoperators sowohl für das Lesen von als auch für das Schreiben in Struct-Elemente. Sie üben das Zuweisen von Werten zu Struct-Elementen, das Ausführen arithmetischer Operationen mit ihnen und den Zugriff auf sie für die Ausgabe.
Zum Beispiel, wenn die Eingabe wie folgt lautet:
2020
Toyota
50000
25000.50Sollte Ihre Ausgabe wie folgt aussehen:
Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50Spickzettel
Der Punktoperator (.) wird verwendet, um auf einzelne Elemente einer Struct-Variable zuzugreifen und diese zu ändern.
Syntax für den Zugriff auf Struct-Elemente:
structVariable.memberNameBeispiel für das Lesen von und Schreiben in Struct-Elemente:
struct Point p1;
// Writing to struct members
p1.x = 10;
p1.y = 20;
// Reading from struct members
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);Der Punktoperator kann in Zuweisungen, arithmetischen Operationen, Funktionsaufrufen oder überall dort verwendet werden, wo Sie eine reguläre Variable dieses Typs verwenden würden. Jedes Element verhält sich wie eine unabhängige Variable seines deklarierten Typs.
Probier 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 Logic & Flow
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