1、定义:函数返回值类型 (* 指针变量名) (函数参数列表);
例如:
函数指针 这一数据类型: int (*)(int,int),
定义变量 int (*func)(int,int);
//类比:定义一个指针变量: int *p;
另外,还可以使用typedef来定义函数指针
例如:
typedef void (*func) (void); //将函数指针 void (*) (void) 重命名为func。
void (*myfunc) (void); 等价于 func myfunc;
2、使用方式
int myadd(int i,int j)
{
return i+j;
}
void main()
{
int (*func)(int,int);
func = myadd;
int result = func(1,2);//替代函数名即可。感觉没啥用。。。
}
以下的情况,函数指针的用处就体现出来了。
int myadd(int i,int j)
{
return i+j;
}
void youadd(int &result,int (*func)(int,int),int i, int j)
{
result = func(i,j);//这时候有用了,假设youadd和myadd是两个人写的,一个人要用另一个人写的函数
}
void main()
{
int sum;
youadd(sum,myadd);
}
注意: void youadd(int &result,int (*func)(int,int))
分析:函数在定义中,某形参是一个函数指针变量,注意函数指针变量的写法,
可以类比一般指针变量的写法,
void youadd(int &result,int *func)//变量名是func,
void youadd(int &result,int (*func)(int,int))//变量名是func,函数指针中的形参是没有变量名的!!
也就是说,函数指针中的变量需要函数的形参或其他途径提供。