可以像这样创建函数指针数组:
typedef void(*FunctionPointer)();
FunctionPointer functionPointers[] = {/* Stuff here */};
在不使用typedef
的情况下创建函数指针数组的语法是什么?
答案 0 :(得分:80)
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
所以你的回答是
void (* arr [])() = {};
但很自然,这是一种不好的做法,只需使用typedefs
:)
<强> 额外: 强> 想知道如何声明一个3指针数组的数组,该函数采用int并返回指向4个指针数组的指针,该指针指向带有double和返回char的函数? (那有多酷啊?)))
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
:))
答案 1 :(得分:14)
记住“声明模仿使用”。所以要使用所说的数组你会说
(*FunctionPointers[0])();
正确?因此,要声明它,您使用相同的:
void (*FunctionPointers[])() = { ... };
答案 2 :(得分:4)
使用此:
void (*FunctionPointers[])() = { };
像其他一切一样工作,在名称后面放置[]。