在不使用单独的 typedef 的情况下声明函数指针数组的语法是什么?

新手上路,请多包涵

函数指针数组可以这样创建:

 typedef void(*FunctionPointer)();
FunctionPointer functionPointers[] = {/* Stuff here */};

不使用 typedef 创建函数指针数组的语法是什么?

原文由 Maxpm 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 556
2 个回答
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

:))

原文由 Armen Tsirunyan 发布,翻译遵循 CC BY-SA 3.0 许可协议

用这个:

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

像其他所有东西一样工作,您将 [] 放在名称之后。

原文由 Erik 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题