函数指针就是一个指向函数的指针变量。在 C 语言中,它是一个在声明时要加上括号的标识符,它指向的是一个函数返回值的数据类型和参数的数据类型。简单来说,声明函数指针的方法是:先声明一个函数类型,然后在函数名前加上一个 * 号,再在函数类型和函数名之间加上一组括号。
例如:如果有函数 int add(int a, int b),那么声明它的函数指针的方法是 int (*pAdd)(int,int);
函数指针可以像一般的变量一样使用,可以在函数的参数中声明、作为返回值、也可以在代码中赋值和传递。
例如:定义一个函数指针变量,然后将它指向一个函数,通过调用函数指针来调用函数。
int (*pAdd)(int,int); //定义函数指针变量int add(int a, int b){
return a+b;
pAdd = add; //将函数指针指向函数
int result = pAdd(3, 5); //通过函数指针来调用函数
函数指针可以动态地指向不同的函数,可以让程序更加灵活地运行。
在回调函数中,也经常会用到函数指针。回调函数就是被另一个函数调用的函数,而这个调用者叫做回调(callback)。当回调函数被调用时,参数(函数指针)会传递给被调函数,被调函数会调用它,并执行回调函数。
将函数指针数组化,可以建立一个函数指针的数组,这样可以方便地使指针指向多个函数。
例如:
int add(int a, int b){ return a+b;
int sub(int a, int b){
return a-b;
int mul(int a, int b){
return a*b;
int (*pArray[3])(int,int); //定义函数指针数组
pArray[0] = add; //将函数指针数组指向不同的函数
pArray[1] = sub;
pArray[2] = mul;
int result = pArray[0](3, 5); //通过函数指针数组调用函数