c - 多次调用函数 - (将函数作为参数传递) - C
问题描述
所以下面的代码可以用来传递一个函数作为参数:
void printNumber(int nbr)
{
printf("%d\n", nbr);
}
void myFunction(void (*f)(int))
{
for(int i = 0; i < 5; i++)
{
(*f)(i);
}
}
int main(void)
{
myFunction(printNumber);
return (0);
}
但是如何更改该代码,以便在“myFunction”之外定义“printNumber”的整数?换句话说,我只想用相同的整数调用函数“myFunction”x 次。
我写了一些伪代码来解释我想要完成的事情:
void printNumber(int nbr)
{
printf("%d\n", nbr);
}
void myFunction(void (*f)(*int)) //pseudocode
{
for(int i = 0; i < 5; i++)
{
(*f)(*int); //pseudocode
}
}
int main(void)
{
myFunction(printNumber(5)); //pseudocode
return (0);
}
解决方案
printnumber(5)
表示立即调用printnumber
并传递它 5. 你想分别传递printnumber
and5
作为两个参数
void printNumber(int nbr)
{
printf("%d\n", nbr);
}
// void (*f)(int) is a pointer to a function that takes an int
// arg is the int to pass in
void myFunction(void (*f)(int), int arg)
{
for(int i = 0; i < 5; i++)
{
// call f and pass in arg
(*f)(arg);
}
}
int main(void)
{
// pass the function and the arg to use
myFunction(printNumber, 5);
return (0);
}
推荐阅读
- python - 通过应用 Python 使用函数
- java - 应用程序启动方法 java.lang.reflect.InvocationTargetException Javafx fxml 中的异常
- firebase - Firestore 数据库中的云函数更新问题
- python - 如何关闭默认标题样式?
- arrays - 当 UIPanGesture 上的状态为 .ended 时循环遍历数组
- python-3.x - python scipy fmin没有成功完成
- python - 是否可以在 python json.dumps 中跳过输出特定键和关联值?
- ios - 如何自定义 UIActivityViewController 以仅包含自定义 UIActivity 类型?
- c# - 创建列表
从 XML 孩子,C# - javascript - 如何使用 post 将 React 组件从 server.js 渲染到 App.js?