Struktur in einer Struktur vom gleichen Typ?
-
Hallo,
ich bin eigentlich schon ein ziemlich guter Programmierer und kenne mich mit den meisten Dingen gut aus. Ich habe irgendwo im Internet ein Programm gesehen, wo eine Struktur in der Struktur vom gleichen Typ definiert wird:struct Element{ Element *e; int a; };
Wie funktioniert das in Zeile 2? Dass ein Zeiger vom Typ Element ist, ist mir klar, aber wenn dann die selbe Struktur drinnen definiert wird, werden doch unendlich viele Zeiger vom Typ Element erzeugt, oder funktioniert das ganz anders, als ich mir das vorstelle?
Eine kleine Erklärung wäre toll
Danke im Voraus!
Lg
SFandler
-
Wo ist das Problem, es ist doch nur ein Zeiger und kein Objekt vom Typ Element?
-
So gut bist du wohl doch nicht, wenn du nicht mal verkettete Listen erkennst?
-
SFandler schrieb:
Ich habe irgendwo im Internet ein Programm gesehen, wo eine Struktur in der Struktur vom gleichen Typ definiert wird:
Das sollte schon in deinem C-Buch behandelt worden sein.
Wenn nicht, schmeiß es weg und besorg dir ein anderes.
-
Streng genommen bist du damit auch im falschen Unterforum; dieses Stück Code ist gültiges C++, aber kein gültiges C. In C müsste das
struct Element { struct Element *e; int a; };
heißen.
Was die Funktionsweise angeht: Ein Zeiger auf struct Element enthält selbst keinen weiteren Zeiger auf struct Element, er kann lediglich auf ein Objekt vom Typ struct Element zeigen, welches dann einen weiteren Zeiger enthielte (oder auch den selben). Du kannst es dir vorstellen wie ein Buch mit einem Literaturverzeichnis.
Ansonsten: Nimm es mir bitte nicht übel, aber bei dieser Sache geht es um Grundwissen. Bitte mach nicht den Fehler, dir falschen Stolz in den Weg zu stellen - wenn du solche Dinge nicht weißt, bist du noch kein ziemlich guter Programmierer. Wenn du das erkennst, hast du die Chance, einer zu werden.
-
Danke für die schnellen Antworten.
Naja wir haben in der Schule noch nichts über "verkettete Listen" gelernt und mit Zeigern haben wir erst vor kurzem begonnen. Aber jetzt versteh ich es.
Danke
-
Guter Programmierer != Pointer nich kennen.
-
Es geht weniger um Pointer sonder eher um grundlegende Datenstrukturen.