学无止境……
分类: C/C++
2014-07-16 10:01:11
回调函数的概念网上很多,看着有点头疼,到现在还没看懂。概念不管了,先知道它是用来干什么的再说。
(注:由于没有完全弄懂概念,很可能会有错误在其中,大家参考下就下行了,别太较真,不过欢迎大家指正,本意就是交流学习心得)。
提到回调函数肯定会涉及函数指针,再牵扯到函数指针的“兄弟”----指针函数。先区分这两兄弟在谈,不然怕以后搞混啦。
函数指针,从汉字分词角度来说,说白了就是指针,函数这是修饰词,配角而已。只不它过指向的是函数的入口地址。
指针函数,跟他“兄弟”一样,“以貌取人”就行了,不就是个函数嘛,只是返回值是指针类型。
Void (*)fun(char param, ...) // 函数指针 Void *fun(char param, ...) // 指针函数
typedef void (*)fun(char param, ...) //一般会把函数指针这样重定义,方便理解和使用 |
反正指针定义符“*”被包围的就是函数指针,谁被重点保护谁当然是主角啦!
其实指针函数没什么好说的。这里主要说说是函数指针用在回调函数中。看代码(不看代码还学人家编程,伪程序员):
|
从上面的代码中总结:
1>回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
2>你想让别人的代码执行你的代码,而别人的代码你又不能动,典型的就是一些库函数。
3>其实说的通俗点,看以把调用者看作类似java中的“接口”,对外提供标准,具体实现由回调函数来实现。