如何在C中传递函数作为参数?

我想创建一个函数,在一组数据上执行参数传递的函数。如何在C中传递函数作为参数

声明

采用函数参数的函数原型如下所示:

无效函数(无效(*f)(int));

这表明参数f将是指向返回类型为void且采用单个int参数的函数的指针。以下函数(print)是可以作为参数传递给func的函数示例,因为它是正确的类型:

无效打印(int x){
printf(“%d\n”,x);
}

函数调用

使用函数参数调用函数时,传递的值必须是指向函数的指针。为此使用函数名(不带括号):

func(打印);

将调用func,将打印函数传递给它

功能体

与任何参数一样,func现在可以在函数体中使用参数的名称来访问参数的值。假设func将其传递的函数应用于数字0-4。首先,考虑循环直接调用打印的样子:

用于(int-ctr=0;ctr<5;ctr++){
打印(ctr);
}

由于func的参数声明指出f是指向所需函数的指针的名称,因此我们首先回顾,如果f是指针,则*ff所指向的对象(即本例中的函数print)。因此,只要用*f:

无效函数(无效(*f)(int)){
对于(int ctr=0;ctr<5;ctr++){
(*f)(中央档案室);
}
}

来源

发表评论