Funktionspointer in C
-
Hallo zusammen,
ich habe lediglich eine kleine Frage zu der Verwendung von Funktionszeigern in C.
An sich sehen die Beispiele für Funktionszeiger meist so aus:
//funktionszeiger void (*foo)(void*); //zuweisung foo = method; //aufruf (*foo)();
Jetzt bin ich über diese Form gestolpert:
//funktionszeiger void (*foo)(void*) //zuweisung foo = (void (*))(0xabcdef01); //aufruf foo();
Ich wäre euch sehr dankbar, wenn mir jemand den Unterschied erklären bzw. sagen könnte, was es mit dem (void (*))(<feste_adresse) auf sich hat.
Vielen lieben Dank schonmal,
Mojo
-
Da wird dem Zeiger eben eine feste Adresse zugeordnet. Und da das normalerweise grober Unfug ist, muss man den Compiler mit einem Cast dazu zwingen.
Der Unterschied foo() und (*foo)() ist nur kosmetisch.
-
Besten Dank, hat sich somit erledigt