函数指针

函数指针是指向函数的指针变量。 函数指针可以像一般函数一样,用于调用函数、传递参数。 typedef int (*fun_ptr)(int,int); // 声明一个指向同样参数、同样返回值的函数指针类型

e.g.

int max(int x, int y) { return x > y ? x : y; }
int (* p)(int, int) = & max; // &可以省略
int a, b, c;
a= p(b, c); // 与直接调用函数a = max(b, c)等价

回调函数

函数指针变量可以作为某个函数的参数来使用 回调函数即通过函数指针调用的函数。

void populate_array(int *array, size_t arraySize, int (*getNextValue)(void));
int getNextRandomValue(void); // 回调函数,由populate_array调用

int myarray[10]; /* getNextRandomValue 不能加括号,否则无法编译,因为加上括号之后相当于传入此参数时传入了 int , 而不是函数指针*/
populate_array(myarray, 10, getNextRandomValue);