如何将指向函数的指针数组作为函数的参数传递?如果函数的类型为空,指针也为空,那么如何访问函数?
int main() {
void(*fun_ptr[])(void) = {fun1, fun2, fun3};
pickFun(fun_ptr);
return 0;
}
所有这三个函数仅打印一条消息,并声明为无效
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。您需要将其更改为
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/