函数指针做函数参数的意义

  
  
int Oper(int (*MyPointerFuncAdd)(int a,int b))
{
int c=MyPointerFuncAdd(5,6);//间接调用
}
实现了函数调用和任务的编写可以分开。
这样的话,这要是这个函数类型的函数,传入不同的函数名,就能执行不同的函数体,用这种方法实现了类似于C++中的多态的形式。

在工程中,函数指针 主要是 正向调用 反向调用
其中正向调用指的是从函数体写在动态库中,在动态库中定义函数时,
、都把定义成函数指针类型的。
此时在外面定义一个函数指针变量,通过一个函数就能够把这个函数的首地址取出来,就可以根据这个被赋值以后的变量调用这个函数。这就是正向调用

反向调用(回调函数)的用途非常大
动态库==》框架

在实际工程中有时一个产品为了适应多个第三方厂商的产品,会给第三方厂商提供一个动态库写成的框架,让厂商们都根据这个框架去开发产品,在动态库里就只是单纯的调用这个函数,在动态库里不写任何函数体,这样就可以适配各个厂商的功能函数。
框架一般是不会变化的,将动态库里面的函数都写成 函数指针类型的,在函数体里,再次调用这个函数,这样在动态库里就会回调厂商提供的功能函数。

回调函数是利用函数指针实现的一种调用机制

回调机制原理
                   当具体时间发生时,调用者通过函数指针调用具体函数
                   回调机制将调用者和被调函数分开,两者互不依赖。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值