Verständnisproblem
-
Hallo,
ich verstehe nicht, warum in der ersten Klammer hinter handle ein * steht. Ein Pointer ? Kurz: es handelt sich hier um die Speicherzuweisung für ein neues Listenelement einer einfach verketteten Liste.
h=(handle *)malloc(sizeof(handle));
-
Das ist eine (an der Stelle völlig unnötige) Typumwandlung des Ergebnisses von malloc: Pointer auf void nach Pointer auf handle.
-
ok, danke vielleicht wäre es nicht unnötig im zusammenhang mit dem restlichen quellcode... Aber wenn's eine umwandlung ist, dann genügt mir das erstmal als antwort.
-
Doch, es ist in jedem Falle unnötig. Ein void-Pointer kann automatisch in jeden beliebigen Pointertyp umgewandelt werden.
-
@Bashar
Nur spinnen manche Compiler rum, wenn man ihnen die Typumwandlung nicht manuell hinschreibt.
-
also ich kenne keinen C Compiler, der dann rumspinnt. C++ Compiler tun dies, aber C++ Compiler sind keine C Compiler und C++ ist nicht C.
-
@kingruedi
Da könntst du recht haben. So genau hab ich das noch nicht ausprobiert oder nachgelesen.
-
AJ schrieb:
@kingruedi
Da könntst du recht haben. So genau hab ich das noch nicht ausprobiert oder nachgelesen.er hat recht.
void* ist in C implizit in alle anderen Zeiger umwandelbar
in C++ nicht.