函数指针是什么,函数指针本质也是指针,不过是指向函数的指针,存储的是函数的地址。
指针函数是什么,指针函数其实就是返回值是指针的函数,本质是函数。
函数指针是如何定义的呢,如下
void (*pfun)(int a,int b)
这里 * pfun 需要加括号,否则定义为了指针函数。
指针函数的定义如下:
void *pfun(int a,int b);
下面利用函数指针实现回调函数
首先我们利用结构体存储一个函数指针类型
typedef struct { void (*p)(int,int); }p_fun;
这个函数指针是指向一个 返回值是void ,二个参数都是int 类型的函数。下面我们定义一个此类型的函数。
void printf_fun(int a,int b) { printf("%d,%d",a,b); }
我们此时可以写一个回调函数,如下:
void callback(int a,int b,void(*p_test)(int,int)) { p_test(a,b); }
最后我们在main函数中调用
int main(void ) { p_fun para;//定义出结构体变量 para.p=printf_fun; // 函数指针指向函数。函数名就是地址 callback(3,5,para.p);//调用回调函数。 //注意:本质上传递的都是地址。所以传递的时候并不能传递参数, }
运行结果:
你们看懂了吗?没看懂多看几遍!!!