• 回调函数的使用


    1、什么是回调函数

      简而言之,回调函数就是一个通过函数指针调用的函数。如果把函数的指针(地址)作为参数传递给另外一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。

    2、为什么要使用回调函数

      因为回调函数可以把调用者和被调用者分开,调用者不关心谁是被调用者,所有它需要知道的,只是存在一个具有某种特定原型,某些限制条件(如返回值为int)的被调用函数。回调函数就好像是一个中断处理函数,系统在符合你设定的条件时自动调用。

    3、如何使用回调函数

      使用回调函数时,我们需要做三件事:

      (1)声明

      (2)定义

      (3)设置触发条件:在你的函数中把你的回调函数名臣转化为地址作为一个参数,以便于系统调用。

      #声明和定义时应该注意,回调函数由系统调用,所以可以认为它属于windows系统,不要把它当作你的某个类的成员函数。

    函数指针的声明:

      对回调函数有了一个初步的了解,下面我们来说一下函数指针,因为要实现回调,必须首先定义函数指针:

      void(*)();

      #左边圆括弧中的星号是函数指针声明的关键。另外两个元素是函数的返回类型(void)和右边圆括弧中的入口参数。

    函数指针声明类型定义

      Typedef void(* pfv)()

      #pfv是一个函数指针,它指向的函数没有输入参数,返回类型为void,使用这个类型定义名称可以隐藏负责的函数指针语法。

      void(*p)()

      void func()

      {

      ……

      }

      p = func;

      p的赋值可以不同,但一定要是函数的指针,并且参数和返回类型相同。

      例如:下面一个例子

    [cpp] view plain copy
     
    1. #include <iostream>  
    2. using namespace std;  
    3.   
    4. typedef void (*PF)(); //函数指针的声明  
    5. void func()   //回调函数定义  
    6. {  
    7.   cout << "func" << endl;  
    8. }  
    9.   
    10. void caller( PF pf)  //即触发条件  
    11. {  
    12.   pf();  
    13. }  
    14.   
    15. int main()  
    16. {  
    17.   PF p = func;  
    18.   caller(p);   //最终通过函数指针PF调用了回调函数func()  
    19.   
    20.   system("pause");  
    21.   
    22.   return 0;  
    23. }  
  • 相关阅读:
    深度学习丨Deep Learning学习资源整理
    机器学习丨《机器学习》、《统计学习方法》思维导图
    概率统计丨陈希孺《概率论与数理统计》思维导图
    数据科学丨DataScience工具速查卡
    线性代数丨《线性代数及其应用》思维导图
    Api接口加密策略
    tomcat重启警告:Abandoned connection cleanup thread 服务器宕机解决方案
    spring mvc多环境下配置文件的设置
    mysql中将查询结果进行拼接处理及concat、group_concat的使用
    JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置
  • 原文地址:https://www.cnblogs.com/xlpsky/p/6178230.html
Copyright © 2020-2023  润新知