回调函数、函数指针、函数指针数组、指向函数指针数组的指针
回调函数:通过函数指针调用的函数。事件发生时由另一方调用,用于对事件的响应。
以下列两个函数为例:
double add(double x, double y)
{
return x + y;
}
double sub(double x, double y)
{
return x - y;
}
- 函数指针:指向函数的指针
typedef double (*func_ptr)(double, double);
void print(double x, double y, func_ptr fp)
{
printf("%lf\n", fp(x, y));
}
print(1, 1, add);
print(1, 1, sub);
- 函数指针数组:存放函数指针的数组
double (*pfunc_ptr[2])(double, double) = {add, sub};
printf("%lf\n", (*pfunc_ptr[0])(3, 8));
printf("%lf\n", (*pfunc_ptr[1])(3, 8));
- 指向函数指针数组的指针:指向函数指针数组
double (*(*ppfunc_ptr)[2])(double, double) = &pfunc_ptr;
printf("%lf\n", (*(*ppfunc_ptr)[0])(24, 35));
printf("%lf\n", (*(*ppfunc_ptr)[1])(24, 35));