标签:
很多人都听说过“回调函数”这个物件,很多人也都明白,也有一部分像我这样的人不明白。今天吃饭的时候突然明白,说白就是一句话:传一个函数指针
就是一个函数,它的一个参数是一个函数指针.
1 return_value func(func_ptr){ 2 ......... 3 }
#include <iostream> using namespace std; int generateOdd(int i){ return 2*i+1; } int print(int(*p)(int i),int K){ int d=0; scanf("%d",&d); if(d==1){ int i=2; printf("this is the number that you want to get:%d\n",p(K)); } else printf("you mother fucker!\n"); } int main(int agrc,char **argv){ print(generateOdd,2); return 0; }
函数功能很简单,生成一个奇数,但根据你的输入来决定打不打印这个奇数。特殊指出,有一个参数是一个函数指针。函数generateOdd的功能是生成一个奇数
有人说了,这我直接一个函数就能干出来呀,你弄个函数指针不是没事找事嘛。可实际上这就是回调函数的实质,那你问有什么用呢?用处很大,特别是你看Linux源代码,很多函数都长的这个样子,一堆指针指来指去。
我今天工作中也看到一段代码,就是用的这个。代码的功能如下:
界面上需要两个按钮,设为A,B
在界面上创建一个按钮A,当你点击按钮A时,按钮A消失,按钮B出现。
其中创建按钮的部分代码如下:
1 standardButtonWithTitle( 2 para1, 3 para2, 4 para3, 5 para4, 6 SEL_CCControlHandler(&PlayerInfoScene::editCallback), 7 para6);
其中第五个参数就是一个回调函数,功能呢和我上面那个是一样的。。当你点击时,我切换按钮。回调函数的功能大概也就是这样,我要做一件事情,但是我不知道我什么时候会做这件事情。
说得有点乱,,你们自己写过代码就会明白。
标签:
原文地址:http://www.cnblogs.com/markliang1994/p/4995773.html