#include <iostream>
using namespace std;
一、为什么要有函数指针?
函数与数据项相似,函数也有地址。我们希望在同一个函数中通过使用相同的形参在不同的时间使用产生不同的效果。
二、怎么声明一个函数指针?
我们知道:声明指向某种数据类型的指针时,必须指定指针指向的类型。
所以,我们声明指向函数的指针时,也必须指定指针指向的函数的类型。意味着我们必须在声明中包括函数的返回值类型与参数列表。下面是一个声明举例:
函数:double average(int , int );
函数指针声明:double (*pa) (int , int ); //函数指针变量是pa
注意:通过上例我们可以发现:要声明指向指定类型的函数的指针,可以首先编写这种函数的原型(函数声明),然后用(*pa)替代函数名。这样pa就是这类函数的指针。
void EatMeat(int num)
{
cout << "我吃了 " << num << " 片肉\n" << endl;
}
void DrinkWater(int num)
{
cout << "我喝了 " << num << " 杯水\n" << endl;
}
void DoSomething(void(*pa)(int), int num)
{
cout << "我要做一些事情: " ;
(*pa)(num); //使用函数指针调用函数
}
int main(void)
{
void(*pa)(int); //声明一个指向返回值为void,参数为int的函数的指针
pa = EatMeat; //先吃肉
DoSomething(pa, 1); //吃一片肉
pa = DrinkWater; //再喝水
DoSomething(pa, 10); //喝十杯水
return 0;
}
————————————————
版权声明:本文为CSDN博主「迷雾江湖」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/SunXiWang/article/details/78591557