c - 初始化函数指针数组

Tom*_*Tom 6 c pointers

我想初始化一个大小为5的指针数组,这些指针包含指向没有参数的函数的指针,并返回一个int(可以是任何促进这些要求的函数).

这是我到目前为止尝试但我得到语法错误:

int (*func)() fparr[5] = int (*func)();
Run Code Online (Sandbox Code Playgroud)

这个语法有什么问题?

小智 15

如果要调用要作为数组的默认内容提供的函数func,则

  1. 你最好用一个typedef,
  2. 你必须使用数组初始化器

考虑:

typedef int (*IntFunc)(void);
IntFunc fparr[5] = { func, func, func, func, func };
Run Code Online (Sandbox Code Playgroud)

或者不太可读的方式,如果您愿意避免typedef:

int (*fparr[5])(void) = { func, func, func, func, func };
Run Code Online (Sandbox Code Playgroud)