回调函数:通过函数指针由某个函数在特定场合下调用指针指向的函数,这个过程叫回调函数
将函数的指针(地址)作为参数传递给另一个函数,当这个指针用来调用其所指向的函数时,便是回调函数。
回调函数不由函数实现直接调用,而是在特定环境下由其他函数调用,用于对该事件或条件进行响应。
场景:程序员不好手工调用某函数时,交给其他函数控制时机调用该函数。
c/c++中回调函数的用法: 1.定义一个函数 void func() { cout<<"…"<<endl; } 2.定义一个函数指针 格式:返回值 (*指针名)(参数类型,参数类型); void (*p)(); //这里这个函数名叫p,指针可以用来被指向一个无返回值,无参数的函数 3.函数指针指向对应格式的函数 //可在其他函数中调用 p = func; 4.通过函数指针调用其指向的函数 p();//函数指针调用函数的这一步叫做回调函数
要定义一个函数指针数组的话, 格式为 void (*func[5])(); //每个成员都是一个函数指针 初始化可以是 void(*func[5])() = { dofunc1, dofunc2, dofunc3 };
函数指针作为函数参数:
void work(void (*p)())
{
p();
}
void work(void (*p[])(),int n)
{
p[0]();
p[1]();
p[n-1]();
}
被其他函数调用时
int main()
{
void (*p)() = func;
work(p);
return 0;
}
当一个函数有参数是函数指针类型时,该函数就可以通过直接传入同类型的函数名来调用控制调用其他函数。
int main()
{
work(func);
return 0;
}
|