• 回调函数的应用误区1(原汁原味的函数指针应用)


    研究了一段时间回调函数,越看越迷惑,分析并改进了从网上看到的几篇好文,看过后有了自己的看法。我也不知道这些跌跌撞撞的认识是否符合回调的真实原理,若有大侠能帮解惑,自当感激不尽。

    下面的代码可以在Vs2008下编译并运行:

    个人观点:

    虽说代码里面到处都注解说这里是回调函数声明,那里是回调函数实现;这里是被调函数声明,那里是被调函数实现;但.....其实个人更感觉这代码更像是一篇函数指针的应用。

    跟回调函数没有太大关系,说有关系那也只是格式上的关系。

    个人总结:

    这篇文章可以让你学会函数指针的使用方法。把它当作回调函数学习入门的基础。

     #include <stdio.h>

    //回调函数声明
    typedef void (*CallBackFun)(void); // 为回调函数命名,类型命名为 CallBackFun,参数为char *p

    // 回调函数实现:Afun:格式符合 CallBackFun 的格式,因此可以看作是一个 CallBackFun   
    void Afun()
    {
        printf("Afun ");
    }

    //回调函数实现:Bfun:格式符合 CallBackFun 的格式,因此可以看作是一个 CallBackFun
    void Bfun()
    {
        printf("Bfun ");
    }

    //被调函数:执行回调方式一:命名方式
    void call1(CallBackFun pCallBack)
    {
        printf("call1: ");
        pCallBack();
    }

    //被调函数:执行回调方式二:函数指针方式
    void call2(void(*ptr)())
    {
        printf("call2: ");
        (*ptr)();
    }


    int main()
    {
        call1(Afun);
        call1(Bfun);

        call2(Afun);
        call2(Bfun);

        return 0;
    }

  • 相关阅读:
    uni-app-数据缓存
    uni-app-网络请求
    uni-app-上拉加载
    uni-app-下拉刷新
    uni-app-生命周期
    uni-app字体图标
    uni-app-样式
    [Python] ValueError: Unknown resampling filter
    [Python]列表复制以及切片[:][::]解析
    LeetCode 29. 两数相除
  • 原文地址:https://www.cnblogs.com/jacklikedogs/p/3747885.html
Copyright © 2020-2023  润新知