我有个小问题。
我在用devc++(作为开始)学习C,我把参数函数看作可以传递函数的函数,这没关系,但为什么?
例如,u可以写为参数:
void myfunc(void(*func)(int)){}
但是如果你用他的名字和参数简单的调用函数,不是更好吗?
例如:
void myfunction (){name of func to call(myargs); }
有区别吗?
看起来是一样的,但是代码更简单和简短
编辑:
我只想知道
void map (int (*fun) (int),int x[ ], int l) {
for(i = 0; i < l; i++)
x[i] = fun(x[i]);
}
为什么你用这个代替:
void map (int x[ ], int l) {
for(i = 0; i < l; i++)
x[i] = nameoffunction(yourargument);
}
最佳答案
如果希望函数根据用户的需要执行不同的操作,则可以使用函数指针作为参数。
下面是一个简单的例子:
#include <stdio.h>
int add(int x, int y)
{
return x + y;
}
int subtract(int x, int y)
{
return x - y;
}
int multiply(int x, int y)
{
return x * y;
}
int divide(int x, int y)
{
return x / y;
}
int operation(int x, int y, int (*func)(int, int))
{
printf(" x=%d, y=%d\n", x, y);
return func(x,y);
}
int main()
{
int x = 8, y = 4;
printf("x+y=%d\n", operation(x,y,add));
printf("x-y=%d\n", operation(x,y,subtract));
printf("x*y=%d\n", operation(x,y,multiply));
printf("x/y=%d\n", operation(x,y,divide));
return 0;
}
关于c - 为什么将函数作为函数的参数传递?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56975795/