What's the syntax for declaring an array of function pointers without using a separate typedef?

后端 未结 3 692
Happy的楠姐
Happy的楠姐 2020-12-12 19:16

Arrays of function pointers can be created like so:

typedef void(*FunctionPointer)();
FunctionPointer functionPointers[] = {/* Stuff here */};
相关标签:
3条回答
  • 2020-12-12 19:30
    arr    //arr 
    arr [] //is an array (so index it)
    * arr [] //of pointers (so dereference them)
    (* arr [])() //to functions taking nothing (so call them with ())
    void (* arr [])() //returning void 
    

    so your answer is

    void (* arr [])() = {};
    

    But naturally, this is a bad practice, just use typedefs :)

    Extra: Wonder how to declare an array of 3 pointers to functions taking int and returning a pointer to an array of 4 pointers to functions taking double and returning char? (how cool is that, huh? :))

    arr //arr
    arr [3] //is an array of 3 (index it)
    * arr [3] //pointers
    (* arr [3])(int) //to functions taking int (call it) and
    *(* arr [3])(int) //returning a pointer (dereference it)
    (*(* arr [3])(int))[4] //to an array of 4
    *(*(* arr [3])(int))[4] //pointers
    (*(*(* arr [3])(int))[4])(double) //to functions taking double and
    char  (*(*(* arr [3])(int))[4])(double) //returning char
    

    :))

    0 讨论(0)
  • 2020-12-12 19:37

    Use this:

    void (*FunctionPointers[])() = { };
    

    Works like everything else, you place [] after the name.

    0 讨论(0)
  • 2020-12-12 19:51

    Remember "delcaration mimics use". So to use said array you'd say

     (*FunctionPointers[0])();
    

    Correct? Therefore to declare it, you use the same:

     void (*FunctionPointers[])() = { ... };
    
    0 讨论(0)
提交回复
热议问题