我知道你可以通过参考传递一个数组:
void func(T (&arr)[4])
{
std::cout<<sizeof(arr)/sizeof(arr[0]);
}
你可以传递一个函数指针数组,如:
void func(void(**run)(int i))
{
run[0](100);
}
void func(void(*run[4])(int i))
{
run[0](100);
}
但是你不能在函数指针的情况下使用sizeof来获得参数数组的大小。
通过引用的函数指针数组的正确语法是什么?
答案 0 :(得分:3)
语法(奇怪)是:
void func(void (*(&run)[4])(int))
额外的括号是从一系列引用中消除声明的歧义 - 这在C ++中是非法的。
答案 1 :(得分:1)
@ 0x499602D2的答案是正确的,但你可能最好花几行来定义你需要的类型:
typedef void (*Func)(int i);
typedef Func FuncArr[4];
void callFuncs(FuncArr& funcs) {
...
}
恕我直言,它更具可读性。