在C++中 函数指针是一个指针,该指针存放的是一个函数地址,而函数的名称就是函数的入口,即地址,要注意与指针函数的区别。如 int * pFunc(int a) 就是一个指针函数,指的是返回某种类型的指针函数。
定义:
type(*funcName)(T param);
参数 | 描述 |
---|---|
type | 该函数的返回类型。 |
funcName | 函数名 |
T | 函数参数类型 |
param | 函数参数 |
我们定义一个函数指针funcName,其返回类型是type,接受一个T类型的参数
#include <iostream>
using namespace std;
int add(int a,int b)
{
return 3;
}
int main()
{
int(*f)(int, int) = add;//等价于int(*f)(int, int) = &add
cout <<"add:"<< add <<endl<<"&add:"<<&add << endl;
int x = 2, y = 4;
int c = f(x, y);
cout << "c:" << c << endl;
return 0;
}
程序运行后,控制台输出如下图所示:
每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。 函数地址的获取,可以是函数名,也可在函数名前加取地址符&。(有点类似于数组int a[2],可以使用数组名a,也可以&a)。