回调函数
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
函数
函数名就是指针,对于一个函数,会自动将其转换为指针。
#include <stdio.h>
void fun(){
}
int main(){
printf("%p-%p-%p\n",fun,&fun,*fun);
return 0;
}
打印的结果是这三个值是一样的。 &fun是该函数的地址, 为指针类型, fun是一个函数, 会转换成其指针类型, 而对于*fun, 由于fun已经变成了指针类型, 指向这个函数, 所以*fun就是取这个地址的函数, 而又根据function-to-pointer, 该函数也转变成了一个指针, 所以以此类推, 这三个值的结果是相同的.
所谓的回调函数,就是依赖于一个函数指针作为一个参数,通过别的函数来调用它指向的函数。
#include <iostream>
using namespace std;
int test1(int num){
cout<<"This is teston function"<<endl;
}
int test2(int num){
cout<<"This is testtwo function"<<endl;
}
int FUN(int (*ptr)(int n),int n){
int a = (*ptr)(n);
return a;
}
int main(){
FUN(test2,10);
return 0;
}
函数指针
1)定义:
函数返回类型 (*指针变量名)(参数列表);
2)函数指针的复制
在赋值时,可以将函数指针赋值给函数名,但是,必须是参数列表相同,返回值相同。