我想创建一个函数,该函数对一组数据执行通过参数传递的函数。在 C 中如何将函数作为参数传递?
宣言
采用函数参数的函数原型如下所示:
void func ( void (*f)(int) );
这表明参数f
将是一个指向函数的指针,该函数具有void
返回类型并且需要一个int
范围。以下函数(print
) 是一个可以传递给的函数示例func
作为参数,因为它是正确的类型:
void print ( int x ) {
printf("%d\n", x);
}
函数调用
当使用函数参数调用函数时,传递的值必须是指向函数的指针。为此使用函数名称(不带括号):
func(print);
会打电话func
,将打印函数传递给它。
函数体
与任何参数一样,func
现在可以在函数体中使用参数的名称来访问参数的值。这么说吧func
将应用传递给数字 0-4 的函数。首先考虑一下直接调用 print 的循环是什么样子的:
for ( int ctr = 0 ; ctr < 5 ; ctr++ ) {
print(ctr);
}
Since func
的参数声明表示f
是指向所需函数的指针的名称,我们首先回想一下,如果f
那么是一个指针*f
是这样的事情f
指向(即函数print
在这种情况下)。因此,只需将上面循环中出现的每个 print 替换为*f
:
void func ( void (*f)(int) ) {
for ( int ctr = 0 ; ctr < 5 ; ctr++ ) {
(*f)(ctr);
}
}
Source
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)