函数指针的定义方式
T (*Func)(…) ;
这样定义了一个返回类型为T的函数指针变量Func,可以用同类型的函数给Func赋值,然后调用Func就可以实现具体函数的调用,如:
void MyFun(int x); //这个声明也可写成:void MyFun( int ); void (*FunP)(int ); //也可声明成void(*FunP)(int x),但习惯上一般不这样。 int main(int argc, char* argv[]) { FunP=&MyFun; (*FunP)(20); return 0; }
上面的main函数的内容也可以写成这样:
int main(int argc, char* argv[]) { FunP=MyFun; FunP(20); return 0; }
说明:
函数指针的赋值可以是FunP=MyFun和FunP=&MyFun中的一个
函数指针的调用可以是(*FunP)(..)和FunP(..)中的一个
函数名也是函数指针,但是正常定义好的函数名为指针常量,而采用T (* FunVar)(…)定义的则是指针变量,它可以接收其他的函数名来赋值
定义了实现的函数不能采用T (* FunVar)(…)这种定义方式
使用typedef来定义某一种函数的指针类型
定义:
typedef int (*PtrFun)(int,int);
这里定义了一个名为PtrFun的函数类型,这个类型的函数返回值为int,并且有两个int类型的参数,可以用这个函数类型来定义函数指针变量
使用:
PtrFun myFun;
定义了一个对应的函数指针变量
上面的PtrFun其实就是一种函数指针类型,可以用它来定义函数指针变量