我有个小问题。
我在用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/

10-11 23:07
查看更多