函数指针作参数的作用
来源:互联网 发布:阿里云国际代购 编辑:程序博客网 时间:2024/05/16 10:20
函数指针作参数的作用查了很多资料,理解上有一定的难度,有的说作为一个接口,我知道人家说得没错,但作为初学者,当时怎么也理解不了,现在我把我个人的理解作一个说明,忘高手指教,感谢中!
作为一个接口,其实就是留个空间让你填上相应的功能。比如,有两个整数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 namespacestd;
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);
}
- 函数指针作参数的作用
- 函数指针作参数的作用
- C++:指针作函数参数的情况
- 指向数组的指针作函数参数
- 指针数组作main函数的参数
- 结构体指针作函数的参数
- 数组指针作函数参数
- 字符指针作函数参数
- 指针数组作函数参数
- 用指针作函数参数
- 关于指针作函数参数
- 用指向指针的指针作函数的参数(指针、指针数组、指向指针的指针)
- 指向函数的指针作函数的参数
- 函数指针作函数参数的简易例程
- 函数max用指向对象的指针作函数参数
- 知识点:用指向函数的指针作函数参数
- c语言 指向函数的指针作函数参数
- 用指向函数的指针作函数参数
- nth_element的用法
- 多个RadionButton时的遍历
- QT 技巧
- 多线程和多核下“锁”的应用
- 200多个js特效分享
- 函数指针作参数的作用
- Java 基础知识
- C语言测试:想成为嵌入式程序员应知道的0x10个基本问题
- R tests
- VS2010、C#、Emgu CV配置 ; 在C#下使用OpenCV ; C#中使用OpenCV(Emgu CV); 配置全程截图
- vs2010程序打包
- start_kernel函数之前的汇编分析
- GridView控件编辑、更新、删除示例(更新包含有DropDownList控件使用)
- CSS DIV大图片右上角叠加小图片