函数指针的使用

一、为什么要有函数指针?


       函数与数据项相似,函数也有地址。我们希望在同一个函数中通过使用相同的形参不同的时间使用产生不同的效果。


二、怎么获取函数的地址?


       获取函数的地址的方法很简单:只要使用函数名(不用跟参数)即可。

       例如:   函数: void function( int a) ;

               则function就是该函数的地址。


三、怎么声明一个函数指针?


       我们知道:声明指向某种数据类型的指针时,必须指定指针指向的类型。

       所以,我们声明指向函数的指针时,也必须指定指针指向的函数的类型。意味着我们必须在声明中包括函数的返回值类型参数列表。下面是一个声明举例:

       函数:double  average(int , int );

       函数指针声明:double (*pa) (int , int );      //函数指针变量是pa

       注意:通过上例我们可以发现:要声明指向指定类型的函数的指针,可以首先编写这种函数的原型(函数声明),然后用(*pa)替代函数名。这样pa就是这类函数的指针。


四、怎么使用函数指针来调用函数?

       例: 

      

double  pam(int);   //声明函数原型
double  (*pa)(int); //声明指向上面函数原型的指针

pa = pam;    //向函数指针赋值

double  x = (*pa)(5);   //使用pa调用函数pam,传递参数5,定义变量x接收函数返回值


其实,C++中除了这样使用:double x = (*pa)(5); 

也允许像函数名一样使用函数指针: double x = pa(5);

但推荐使用前者,因为前者它表达的意图很明确:我在使用函数指针!


五、一个使用函数指针的实例:

源代码:

#include <iostream>

using namespace std;

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;
}

运行截图:

                   





  • 15
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值