函数作为形参传入C语言,如何将函数作为参数传递给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);

}

因为func的参数声明说f是指向期望函数的指针的名字,我们首先回顾如果f是一个指针,那么* f是f指向的东西(即在这种情况下的函数print)。结果,只需在上面的循环中用* f替换每次出现的print:

void func ( void (*f)(int) ) {

for ( int ctr = 0 ; ctr < 5 ; ctr++ ) {

(*f)(ctr);

}

}

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值