如何将函数的指针数组作为函数的参数传递?如果函数的类型是void,指针也是void,那么如何访问函数呢?
int main() {
void(*fun_ptr[])(void) = {fun1, fun2, fun3};
pickFun(fun_ptr);
return 0;
}
所有 3 个函数仅打印一条消息并声明为 void
void pickFun(void *function_ptr[])
{
int pick = 0;
while(pick != 0)
{
scanf("%i", &pick);
*(function_ptr + (pick - 1));
}
}
当选择一个函数时,我永远无法显示该函数的 printf 语句。该程序只是循环并且从不打印每个函数中包含的消息。有什么建议或线索吗?
最佳答案
功能参数void *function_ptr[]
类型为pointer to pointer to
无效`。您需要将其更改为
void pickFun(void (*function_ptr[])(void));
另请注意,正如其他人在注释中指出的那样,程序永远不会进入循环体。更好用do while
在这里循环
void pickFun(void *function_ptr[])
{
do
{
scanf("%i", &pick);
//*(function_ptr + (pick - 1));
function_ptr[pick-1](); //Function call. pick should not be greater than 3
} while(pick != 0)
}
关于c - 数组和函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39739306/