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


  • Mod

    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 🤡


Anmelden zum Antworten