1.函数指针:指向函数的指针变量.

                函数在内存中也是有地址的,函数名代表函数的内存地址.

   例子:函数:int sum(int a,int b);

     int sum(int a,int b){

        return a+b;

      }

      函数名+形参  就是函数

     函数指针: 函数指针定义:int(*p)(int a,int b);

     技巧,赋值函数声明int sum(int a,int b),将sum括起来加个*号,将sum改个名字,就定义了一个函数指针,p就是变         量,p = sum;int x = sum(2,3); int x = p(2,3);等价

2. 函数指针剖析

    int(p*)(int a,int b) = NULL;

    类型: int(*)(int a,int b) 

    变量名: p

    初值: NULL

3. p = sum;

    p = naxValue;

    p可以指向任何一个函数;

4. typedef int (*PFUN)(int,int);

    相当于把int(*)(int a,int b)改成了PFUN;

    PFUN p = NULL;

     P = sum;

    给函数指针赋值,必须与定义的类型一致.此时p的类型是int

5. 回调函数

    callback

    函数回调核心就是把函数作为形参;

例子:int  maxValue(int x,int y){

       return a > b ? a : b;

     }

      int getValue(int x, int y){

     return sum(x,y);// 此时getValue是求和;调用时 int a = getValue(2,4);

     或者 return maxValue(x,y);// 此时getValue是求最大值;调用时 int a = getValue(2,4);

      使用哪个就得改getValue函数的内部实现,不灵活,比较麻烦!!!!

   }

   int getValue(int x, int y,PFUN p){(PFUN p代表返回值是整形的函数指针)

     return p(x, y);

    }

   int a = getValue(2,4,maxValue);

   int b = getValue(2,4,sum);

   两种的实现,getValue一点都没变,只是传参数的值.还可以添加其它函数,p随意指,很方便.

   比如迅雷公司,此时getValue是核心的代码,是知识产权,不会让程序员修改,升级时只是添加函数,然后主函数调用就可     以了

 

最新文章

  1. C++强制类型转换
  2. SQLite3的基本使用
  3. 20款jquery下拉导航菜单特效代码分享
  4. 环形进度条带数字显示(canvas)
  5. 在预装win8的电脑上换win7系统讲解
  6. 表格单元格td设置宽度无效的解决办法 .
  7. C++对文件进行加密解密
  8. 【转】Jqgrid学习之ColModel API
  9. 读书笔记-你不知道的JS中-promise(2)
  10. 定时跳转的两种方式(html + javaweb)
  11. elasticsearch6.6及其插件安装记录(较详细)
  12. VMware配置Linux中APPache服务器
  13. 本博客已不再更新,新文章将发布在我的个人博客:https://www.tapme.top
  14. leetcode-856 Score of Parentheses
  15. muduo学习笔记(二)Reactor关键结构
  16. Mahout分步式程序开发 基于物品的协同过滤ItemCF
  17. 三层BP神经网络的python实现
  18. out.println(session.getLastAccessedTime());的返回值到底是毛线意思???
  19. Python 面向对象编程基础
  20. 内联汇编实现 memcpy 和 memset

热门文章

  1. jprofiler 监听远程java项目
  2. AngularJS 前端 MVC 的设计与搭建
  3. AcWing:110. 防晒(贪心)
  4. maven jdbc 驱动安装
  5. mongo 是什么
  6. python3笔记十九:os和ospath模块
  7. LeetCode 18. 四数之和(4Sum)
  8. CentOS 6.5 安装OSA监控精灵监控主机
  9. 浏览器端-3WSchool-JavaScript:JavaScript Boolean 对象
  10. 自动轮询的recycleView