函数指针作参数的作用

函数指针作参数的作用查了很多资料,理解上有一定的难度,有的说作为一个接口,我知道人家说得没错,但作为初学者,当时怎么也理解不了,现在我把我个人的理解作一个说明,忘高手指教,感谢中!
作为一个接口,其实就是留个空间让你填上相应的功能。比如,有两个整数a和b,现在是a和b参与一个运算,具体什么运算,由你自己决定,可以这样写一个程序:
先定义一个由函数指针作参数的函数:
     int fun(int(*pfun)(int,int),int a,int b)
     {
         //这里是函数封装的其它内容

         retrun pfun(a,b);
         //pfun是留给调用这个函数的空子(接口)
     }

然后再定义一个或几个运算函数,怎么运算就由自己决定,比如我用加法:
     int add(int a,int b)
     {
        return a+b;
     }
那么在主程序中:
      main()
     {
        fun(add,1,2);
     }
这样就实现了,一个函数接口的问题。当初看上面的程序好象有点复杂,与其那样不如直接调用add多好,为什么要那样啊?可是在稍复杂点的程序中,有好多内容不需要用户去做,这些内容就可以封装起来,有些内容只有在用户使用这个封装时才能决定的时候,比如上面两个数的运算就竞是什么样的,那要由用户决定时,这个函数指针的作用就体现出来了!
以上本人初学只能体会这个样子,不知道正确不?另外,高手们有更好的帮说明下,谢谢了!

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#include <iostream.h>
#include <list>
using namespace std;

void max(int a, int b)
{
    cout<<"now call max("<<a<<","<<b<<")..."<<endl;
    int t = a>b?a:b;
    cout<<t<<endl;
}
void min(int a, int b)
{
    cout<<"now call min("<<a<<","<<b<<")..."<<endl;
    int t = a<b?a:b;
    cout<<t<<endl;
}
typedef void (*myFun)(int a, int b); //定义一个函数指针用来引用max,min


//回调函数
void callback(myFun fun, int a, int b)
{
     fun(a,b);
}
void main()
{
    int i = 10;
    int j = 55;
     callback(max,i,j);

     callback(min,i,j);
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值