函数指针的理解与使用

本文探讨了函数指针的概念及其实现函数回调的应用。通过一个具体的案例,讲解了如何利用函数指针作为参数,实现对不同算法的灵活选择。这不仅使代码更加清晰有条理,还展示了函数指针在实际编程中的重要性和实用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

马上研三,面临着找工作,心血来潮,在学堂在线网站上复习C++语法课,希望把以前没搞懂的一些知识点弄懂了。

以后可能会陆续更新一些难啃点的使用理解。

 

函数指针:

    定义:函数指针指向存放代码段的首地址;

    定义形式:存储类型 返回值类型 (*函数指针名) ();

 

   值得注意的与指针类型的函数的区别:

          指针类型的函数:函数返回值是指针。定义形式:存储类型  返回值类型 * 函数指针名();

 

重点(敲黑板):

    典型用途:实现函数回调。

      理解:

            A、通过函数指针调用函数。将函数的指针作为参数传递给一个函数,使得在处理相似的事件的时候可以灵活的使用不同的方法;

            B、调用者不关心谁是调用者。即需要知道存在一个具有特定原型和限制条件的被调用函数。(个人感觉,这一条是最实用的)

      具体怎么来理解函数指针的用途呢?这里就必须要贴上案例了。

问题描述:编写一个计算函数compute,对两个整数进行各种计算。要求:

   1)有一个形参为指向具体算法函数的指针,根据不同的实参函数,用不同的算法进行计算。

   2)编写三个函数:求两个整数的最大值、最小值、和。分别用这三个函数作为实参,测试compute函数

代码:

    #include <iostream>

    using namespace std;

    int compute(int a, int b, int (*func) (int , int))

     { return func(a,b); }

 

    int max (int a, int b)    //计算最大值

    {  return ( (a>b)? a: b); }

 

    int min( int a, int b)   //计算最小值

   { return a<b? a: b; }

 

   int sum(int a, int b)    //计算和

   { return a+b;}

 

  int main()

{

    int a, b, res;

   cout<<“请输入整数a:”;   cin>>a;

   cout<<"请输入整数b: ";     cin>>b;

   res=compute(a, b, &max);   //计算两者较大值

   res=compute(a, b, &min);    //计算两者较小值

   res=compute(a, b, &sum);    //计算两者之和

}

        这个例子很好的说明了函数指针实现函数回调的使用,包括函数指针作为形参的定义、包含函数指针的函数的调用。值得认真体会。

        从这个例子也可以看出函数指针还是挺有用的,可以让代码逻辑更清楚、有条理。但是也有一点问题,增加了函数调用,增加了程序调试时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值