Zeiger auf Strukturen
Die Programmiersprache C ermöglicht das Erstellen von Zeigern nicht nur auf reguläre Datentypen, sondern auch auf Strukturen (da eine Struktur ein benutzerdefinierter Datentyp ist).
Die Deklaration und Initialisierung eines Zeigers sieht folgendermaßen aus:
struct <name_of_struct>
{
<field_of_struct>;
};
struct <name_of_struct>* <name_of_pointer>;
Wenn <name_of_pointer> ein Zeiger auf eine Struktur ist,
dann ist *(<name_of_pointer>) die Struktur selbst.
Um auf die Felder einer Struktur über einen Zeiger zuzugreifen, muss der Operator -> verwendet werden.
-> ist ein Analogon zum Strukturzugriffsoperator .
main.c
12345678910111213141516171819202122#include <stdio.h> // structure declaration struct Point { int x; int y; }; int main() { // create a structure variable of Point type struct Point p1; p1.x = 10; p1.y = 20; // create a pointer to a structure of type Point and assign it the address of variable p1 struct Point* ptr = &p1; // Access structure members via pointer by `->` operator printf("Coordinates: (%d, %d)\n", ptr->x, ptr->y); return 0; }
Dieses Programm zeigt, wie mit einer Point-Struktur gearbeitet wird, die zwei Koordinaten, x und y, speichert. In der Funktion main wird eine Variable p1 erstellt und mit Koordinatenwerten belegt, anschließend wird ein Zeiger auf diese Struktur initialisiert. Mit dem ->-Operator greift das Programm über den Zeiger auf die Felder der Struktur zu und gibt die Koordinaten des Punktes auf dem Bildschirm aus.
Swipe to start coding
Sie haben eine:n Student:in mit Noten in 3 Fächern: Mathematik, Physik und Programmieren.
Ihre Aufgabe ist es, die Durchschnittsnote der Studentin bzw. des Studenten zu berechnen und festzustellen, ob sie oder er den Kurs bestanden hat.
In der Funktion calculateAverageAndCheck:
- Zugriff auf jede Fachnote über den Zeiger.
- Addieren Sie alle drei Noten, um die Gesamtpunktzahl zu ermitteln.
- Teilen Sie die Gesamtsumme durch
3.0, um die Durchschnittsnote zu berechnen. - Vergleichen Sie das Ergebnis mit dem Bestehensgrenzwert von 60.
- Wenn der Durchschnitt größer oder gleich 60 ist, geben Sie
truezurück (Student:in hat bestanden). - Andernfalls geben Sie
falsezurück (Student:in hat nicht bestanden).
Beispiel
| Math | Physics | Programming | Average | Result |
|---|---|---|---|---|
| 85.0 | 55.0 | 60.0 | 66.67 | ✅ Passed |
| 50.0 | 40.0 | 45.0 | 45.00 | ❌ Failed |
| 60.0 | 60.0 | 60.0 | 60.00 | ✅ Passed |
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you show me the code example for this Point structure?
How does the `->` operator differ from the dot operator in C?
Can you explain how to initialize a pointer to a structure in more detail?
Großartig!
Completion Rate verbessert auf 4.35
Zeiger auf Strukturen
Swipe um das Menü anzuzeigen
Die Programmiersprache C ermöglicht das Erstellen von Zeigern nicht nur auf reguläre Datentypen, sondern auch auf Strukturen (da eine Struktur ein benutzerdefinierter Datentyp ist).
Die Deklaration und Initialisierung eines Zeigers sieht folgendermaßen aus:
struct <name_of_struct>
{
<field_of_struct>;
};
struct <name_of_struct>* <name_of_pointer>;
Wenn <name_of_pointer> ein Zeiger auf eine Struktur ist,
dann ist *(<name_of_pointer>) die Struktur selbst.
Um auf die Felder einer Struktur über einen Zeiger zuzugreifen, muss der Operator -> verwendet werden.
-> ist ein Analogon zum Strukturzugriffsoperator .
main.c
12345678910111213141516171819202122#include <stdio.h> // structure declaration struct Point { int x; int y; }; int main() { // create a structure variable of Point type struct Point p1; p1.x = 10; p1.y = 20; // create a pointer to a structure of type Point and assign it the address of variable p1 struct Point* ptr = &p1; // Access structure members via pointer by `->` operator printf("Coordinates: (%d, %d)\n", ptr->x, ptr->y); return 0; }
Dieses Programm zeigt, wie mit einer Point-Struktur gearbeitet wird, die zwei Koordinaten, x und y, speichert. In der Funktion main wird eine Variable p1 erstellt und mit Koordinatenwerten belegt, anschließend wird ein Zeiger auf diese Struktur initialisiert. Mit dem ->-Operator greift das Programm über den Zeiger auf die Felder der Struktur zu und gibt die Koordinaten des Punktes auf dem Bildschirm aus.
Swipe to start coding
Sie haben eine:n Student:in mit Noten in 3 Fächern: Mathematik, Physik und Programmieren.
Ihre Aufgabe ist es, die Durchschnittsnote der Studentin bzw. des Studenten zu berechnen und festzustellen, ob sie oder er den Kurs bestanden hat.
In der Funktion calculateAverageAndCheck:
- Zugriff auf jede Fachnote über den Zeiger.
- Addieren Sie alle drei Noten, um die Gesamtpunktzahl zu ermitteln.
- Teilen Sie die Gesamtsumme durch
3.0, um die Durchschnittsnote zu berechnen. - Vergleichen Sie das Ergebnis mit dem Bestehensgrenzwert von 60.
- Wenn der Durchschnitt größer oder gleich 60 ist, geben Sie
truezurück (Student:in hat bestanden). - Andernfalls geben Sie
falsezurück (Student:in hat nicht bestanden).
Beispiel
| Math | Physics | Programming | Average | Result |
|---|---|---|---|---|
| 85.0 | 55.0 | 60.0 | 66.67 | ✅ Passed |
| 50.0 | 40.0 | 45.0 | 45.00 | ❌ Failed |
| 60.0 | 60.0 | 60.0 | 60.00 | ✅ Passed |
Lösung
Danke für Ihr Feedback!
single