typumwandlung
-
Hallo
ich wird irgendwie aus der syntax z.B. " typedef sometype *st; " nicht schlau. Das *-Zeichen ist eigentlich das Problem (ein pointer auf ein typ?). Kann mir jemand sagen wann/wiso man das benutzt?
danke
-
damit deklarierst du ein neuen typ (pointer auf objekte vom typ ...), pointer auf typen gibt es nicht, es gibt aber pointer auf objekte (die einen bestimten typ haben müssen)
-
Die Syntax ist mal wieder logisch, statt intuitiv
Normale Deklaration: TYP DEKLARATOR, also beispielsweise int *pi oder auch void *(*pf)(). Dadurch wird eine Variable deklariert, die in einem Kontext, wie im Deklarator angegeben, den angegebenen Typ ergibt. Also pi ist ein int, wenn man *pi schreibt (daraus folgt, pi muss ein Pointer auf int sein). Soviel dazu.
Schreibt man jetzt typedef vor die ganze Deklaration, erzeugt man keine Variable eines bestimmten Typs, sondern ein Synonym für diesen Typ. typedef void *(*fptr)(); macht also, dass fptr ein Synonym für den Typ 'Zeiger auf Funktion ohne Argumente, die einen Zeiger auf void zurückliefert' ist.