函数作为形参有何意义
如
void Out(int a) { cout<<a<<" "; }
int i=0;
void Tout(int b[],void Out(int a))
{
Tout(b[i++],Out);
}
[解决办法]
百度
回调函数
设计模式中所谓的命令模式,就是回调函数的面向对象的实现
[解决办法]
#include <iostream>using namespace std;void f1(){ cout <<"i am f1()" <<endl;}void f2(){ cout <<"i am f2()" <<endl;}void f3(){ cout <<"i am f3()" <<endl;}typedef void (*func)();void call(func f){ f();}int main(){ func p[]={f1,f2,f3}; for(int i=0;i<3;++i) call(p[i]); return 0;}
[解决办法]
函数也是个特殊的指针罢了,可以传的。
回调函数是其主要用途:
下面例子中的CompareFunction 就是回调函数,这样用户就可以自己定义两个元素比较的规则,使得排序算法更加通用。
网上的一个例子:
void DLLDIR __stdcall Bubblesort(byte* array,int size,int elem_size,CompareFunction cmpFunc){ for(int i=0; i < size; i++) { for(int j=0; j < size-1; j++) { //回调比较函数 if(1 == (*cmpFunc)(array+j*elem_size,array+(j+1)*elem_size)) { //两个相比较的元素相交换 byte* temp = new byte[elem_size]; memcpy(temp, array+j*elem_size, elem_size); memcpy(array+j*elem_size,array+(j+1)*elem_size,elem_size); memcpy(array+(j+1)*elem_size, temp, elem_size); delete [] temp; } } }}
[解决办法]