C++函数指针
与数据项相似,C++函数也有对应的内存地址。函数地址是存储其机器语言代码的内存的开始地址。所以我们可以编写将另一个函数的地址作为参数的函数,这样第一个函数就能找到第二个函数并执行它。
1.获取函数的地址
获取函数地址的方式很简单,只要使用函数名即可。假设funcA()是一个函数,funcA就是该函数的地址。要将函数作为参数传递,必须传递函数名:
void test(funcA)
{
.....
}
2.声明函数指针
声明指向函数的指针时,必须指定指针指向的函数类型。也就是说声明应指定函数的返回类型以及函数的特征标(参数列表)。
函数原型
int sum(int a,int b);
指针类型声明如下
int (*pf)(int a,int b);
将sum替换为(*psum),由于sum是函数,所以(*pf)也是函数,则pf就是函数指针。(通常要声明指向特定类型的函数指针,可以首先编写该函数的原型,然后用(*pf)替换函数名。这样pf就是这类函数的指针)。
必须在声明中用括号将pf扩起来,应为括号的优先级比运算符高,因此*pf(int a,int b)意味着pf()是一个返回指针的函数,而(*pf)(int a,int b)代表pf是一个指向函数的指针。
正确声明pf后,便可将相应的函数地址赋给它。
int sum(int a,int b);
int (*pf)(int a,