Funktionszeiger



  • Huhu,
    wie bekomme ich folgenden Funktionszeiger

    // Zeiger auf eine Funktion, die einen Zeiger auf ein Array mit 6 ints zurückgibt.
    int ( *(*p)() )[6] = &fkt;
    

    initialisiert.

    Ich habs einfach mal schlicht so versucht,

    int ar[6] = {}; // globales Array
    int* fkt() { return ar; }
    

    aber das haut nicht hin. Wie muss ich die Funktion abändern, damit sich der Zeiger initialisieren lässt?


  • Mod

    Theoretisch so (http://cdecl.ridiculousfish.com/ sei gepriesen!):

    int ( *(fkt)() )[6]  { return &ar; }
    

    Lass dir aber gesagt sein, dass dies sehr sehr ungewöhnlich ist.



  • SeppJ schrieb:

    Theoretisch so (http://cdecl.ridiculousfish.com/ sei gepriesen!):

    int ( *(fkt)() )[6]  { return &ar; }
    

    Lass dir aber gesagt sein, dass dies sehr sehr ungewöhnlich ist.

    Oh ja, da stimm ich dir zu, das schaut wirklich ungewöhnlich aus. Damit hast du wohl auch schon meine nächste Frage beantwortet, nämlich wer so einen Funktionszeiger definiert

    // pointer to function returning pointer to array of 6 pointers to function returning int.
    int (  *(*(*p)())[6]  )();
    

    hat wohl nicht mehr alle Latten am Haag :D.


Anmelden zum Antworten