> 函数指针变量做函数参数(回调函数)
函数参数除了是普通变量,还可以是函数指针变量:
void fun( int x ) //形参为普通变量
{
}
void fun( int(*p)(int a) ) //形参为函数指针变量
{
}
函数指针变量常见的用途之一是把指针作为参数传递到其他函数,指向函数的指针也可以作为参数,以实现函数地址的传递。
int add(int a, int b)
{
return a + b;
}
int minus(int a, int b)
{
return a - b;
}
//int(*p)(int a, int b), p 为函数指针变量
void fun(int x, int y, int(*p)(int a, int b))
{
//函数的调用 和 函数的实现 有效的分离
int a = p(x, y); //回调函数
printf("a = %d\n", a);
}
typedef int(*Q)(int a, int b); //Q 为函数指针类型
void fun2(int x, int y, Q p) //p 为函数指针变量
{
int a = p(x, y); //回调函数
printf("a = %d\n", a);
}