一句话解释回调函数

很多人都听说过“回调函数”这个物件,很多人也都明白,也有一部分像我这样的人不明白。今天吃饭的时候突然明白,说白就是一句话:传一个函数指针

就是一个函数,它的一个参数是一个函数指针.

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);

其中第五个参数就是一个回调函数,功能呢和我上面那个是一样的。。当你点击时,我切换按钮。回调函数的功能大概也就是这样,我要做一件事情,但是我不知道我什么时候会做这件事情。

说得有点乱,,你们自己写过代码就会明白。

时间: 2024-12-26 14:58:04

一句话解释回调函数的相关文章

回调函数(真好理解)

回调函数 在看LWIP时,见到用回调函数,再看某老外公司OPC源代码时,见到用回调函数.看我国内某些代码(我公司软件等)时没用到.于是,我对回调函数产生了很大的好奇.以前,我写VC程序时用到过回调函数,但是没有用C语言来使用.最近,看到国外大量的经典代码中广泛使用了回调函数(LWIP.某两个公司的OPC程序等),都是C语言来实现的,而不是VC windows程序中别人实现自己使用的那种. 为了弄明白这种函数的奥妙,首先提出三个问题: 1.        回调函数是什么东西? 2.        

c/c++:回调函数

1:函数名为指针 首先,在C语言中函数是一种function-to-pointer的方式,即对于一个函数,会将其自动转换成指针的类型.如: 1 #include<stdio.h> 2 3 void fun() 4 { 5 } 6 7 int main() 8 { 9 printf("%p %p %p\n", &fun, fun, *fun); 10 return 0; 11 } 这三个值的结果是一样的. 其实对于最后的那个*fun, 即使前面加上很多个*号, 其结果

回调函数的应用误区3(大彻大悟的回调小程序,例子的解释相当给力)

研究了一段时间回调函数,越看越迷惑,分析并改进了从网上看到的几篇好文,看过后有了自己的看法.我也不知道这些跌跌撞撞的认识是否符合回调的真实原理,若有大侠能帮解惑,自当感激不尽. 下面的代码可以在Vs2008下编译并运行: 所有的回调函数文章里,能让我一下看明白回调函数的就是这篇文章了,描述简单,一语中的:http://hi.baidu.com/zht7216/item/1dd32e82a68c40d15f0ec154 摘选如下: 函数指针是一个指向函数的指针变量,它是专门来存放函数入口地址的,在

Cocos2d-x3.1回调函数具体解释

Cocos2d-x3.1回调函数的定义CCRef.h声明.源代码,例如,下面的: typedef void (Ref::*SEL_CallFunc)(); typedef void (Ref::*SEL_CallFuncN)(Node*); typedef void (Ref::*SEL_CallFuncND)(Node*, void*); typedef void (Ref::*SEL_CallFuncO)(Ref*); typedef void (Ref::*SEL_MenuHandler)

回调函数,就是回头再调用的函数

又遇到了回调函数,这次打算写下来分享一下.水平有限,如有错误,请指正. 转载请注出处. 所谓回调函数,或者在面向对象语言里叫回调方法,简单点讲,就是回头在某个时间(事件发生)被调用的函数. 再详细点:就是一个函数A,作为参数,传入了另一个函数B,然后被B在某个时间调用. 这里可以有疑问了,既然是一个函数调用另一个函数,可以在函数体里面调用啊,为什么还要把函数作为参数传到另一个函数里被调用?何况还有一些语言(比如java)不支持把函数作为参数. 对的,确实可以在函数体里调用另一个函数,功能上好像是

Node.js学习笔记(3)——关于回调函数和函数的回调

说明:本人是node.js的初学者,尝试向别人解释这是怎么回事是自我学习的一个好方法.如果你发现有些地方并不是那么正确,欢迎提出来让我知道以便修正,共同进步,谢过^_^.       欢迎交流,本人微博:http://weibo.com/bitsea  很多地方都涉及到函数的回调,在这里简单说一下什么是函数的回调. 回调函数就是回来再调用的函数. 基于js的单线程执行代码的风格,回调是必须的选择.也可以说是一种不得已而为之的选择吧,回调无疑增加了代码的复杂性,使其变得难读.难理解,难维护.但是,

什么是回调函数?

我们绕点远路来回答这个问题. 编程分为两类:系统编程(system programming)和应用编程(application programming).所谓系统编程,简单来说,就是编写库:而应用编程就是利用写好的各种库来编写具某种功用的程序,也就是应用.系统程序员会给自己写的库留下一些接口,即API(application programming interface,应用编程接口),以供应用程序员使用.所以在抽象层的图示里,库位于应用的底下. 当程序跑起来时,一般情况下,应用程序(applic

callback回调函数--python

编程分为两类:系统编程(system programming)和应用编程(application programming).所谓系统编程,简单来说,就是编写库:而应用编程就是利用写好的各种库来编写具某种功用的程序,也就是应用.系统程序员会给自己写的库留下一些接口,即API(application programming interface,应用编程接口),以供应用程序员使用.所以在抽象层的图示里,库位于应用的底下. 当程序跑起来时,一般情况下,应用程序(application program)会

[转]Shared——回调函数是什么

本文内容转自知乎 作者:no.body 链接:https://www.zhihu.com/question/19801131/answer/27459821 回调函数(callback)是什么? 什么是回调函数? 我们绕点远路来回答这个问题. 编程分为两类:系统编程(system programming)和应用编程(application programming).所谓系统编程,简单来说,就是编写库:而应用编程就是利用写好的各种库来编写具某种功用的程序,也就是应用.系统程序员会给自己写的库留下一