C typedef struct frage

freddmann

Ensign
Registriert
Sep. 2005
Beiträge
241
hallo,
habe hier im im bereich abstrakte datentypen (liste) ein schnippsel code, was ich nicht so ganz raffe:

Code:
typedef struct _elem {
   Value val;
   struct _elem *next,
                *prev;
} ElemRec, *Elem


und zwar verstehe ich nicht, was die variable und vor allem die zeigervariable hinter der geschweiften klammer soll. könnte mir das jmd erklären? und ausserdem wieso lässt man die variable elem mit einem unterstrich beginnen?
thx und mfg freddmann
 
Das ist keine Variable, sondern ein Typname. Durch das Schlüsselwort "typedef" werden hier zwei neue Typenbezeichner eingeführt: nämlich "ElemRec" für den darüberstehenden struct, und "Elem" für Zeiger auf ebendiesen struct.

Das mit dem Unterstrich ist nur eine Konvention, um anzuzeigen, daß der Name "_elem" intern ist - er wird benötigt, um innerhalb des struct-Typs die Felder prev und next zu deklarieren. In allen anderen Fällen soll der Name "ElemRec" verwendet werden, um diesen Typen zu bezeichnen, der ist in dem Moment, wo prev und next deklariert werden, aber noch nicht bekannt.
 
man könnte diesen typedef auch komplett anders hinschreiben, so wie es hier eigentlich gedacht ist. was du hier hast ist nämlich ne kurzform :)

struct _elem {
Value val;
struct _elem *next,
*prev;
};

typedef struct _elem ElemRec;
typedef struct _elem *Elem;

den eigentlichen typen habe ich mal rot markiert.
 
Zurück
Oben