函数指针是指向函数而非指向对象的指针。与其他类型的指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关。(类似C#中的代理)
函数指针的声明如下:
返回值类型 (*函数指针名)(函数参数列表)
例如:double (*fun)(double, double)
先看一个实例:
#include <iostream>
using namespace std;
double add(double num1, double num2)
{
return num1 + num2;
}
double add(double num1, double num2, double num3)
{
return num1 + num2 + num3;
}
int main()
{
double (*funAdd)(double ,double) = add;
double result = funAdd(12,13);
cout<<result<<endl;
double (*funAdd3)(double, double, double) = add;
result = funAdd3(1,2,3);
cout<<result<<endl;
}
运行结果如下:
25
6
按任意键继续...
函数指针只能通过同类型的函数或函数指针或0常量表达式进行初始化或赋值。
函数指针有两个用途:调用函数和做函数的参数。
做函数的参数实例如下:
#include <iostream>
using namespace std;
void fun(int num1, int num2, int (*fp)(int, int))
{
int result = fp(num1, num2);
cout<<result<<endl;
}
int add(int num1, int num2)
{
return num1 + num2;
}
int subtract(int num1, int num2)
{
return num1 - num2;
}
int main()
{
fun(12,13,add);
fun(12,13,subtract);
return 0;
}
运行结果如下:
25
-1
按任意键继续...