首页 > 其他分享 >对C语言中回调函数(callback)的一点理解

对C语言中回调函数(callback)的一点理解

时间:2022-08-31 16:35:36浏览次数:69  
标签:函数 int s1 mprint C语言 char callback pf

一般函数形式: function a(char *a, String b):接收的参数是一般类型;
特殊函数:function b(char *a, function c):接收的其中一个参数是函数(只是为了表述方便这么写,实际应该是指向函数的指针),这个函数c就被称为回调函数

  • 即要执行函数b了,说明执行条件已经满足,再执行函数c
  • 如果把函数指针作为参数传递给另一个函数,当这个指针被用来调用所指向的函数时,就称之为回调函数。

先看一段随便写的回调函数代码示例:

#include <iostream>
typedef int (*PF)(char *);

int mprint_pf(char *s) {
    printf("mprint_pf: %s\n", s);
    return 0;
}
int mprint(char *s1, PF pf) {
    printf("mprint: %s\n", s1);
    (*pf)(s1);
    pf(s1);
    return 0;
}
int main() {
    mprint("test", mprint_pf);
    return 0;
}

输出结果为

mprint: test
mprint_pf: test
mprint_pf: test

那么和直接在mprint函数体里面调用mprint_pf有什么区别呢,在这里用argument:mprint_pf来初始化mprint的parameter:pf,相比直接在函数体里调用mprint_pf,多了一种时机已到的含义,正因为时机已到,才用mprint_pf来初始化pf,而不是置空或者用别的函数来初始化;或者说在函数体里面调用pf(s1),用于初始化parameterargument不同,调用pf(s1)的效果也不同。

标签:函数,int,s1,mprint,C语言,char,callback,pf
From: https://www.cnblogs.com/zwyyy456/p/16643536.html

相关文章

  • 生成函数(母函数)
    生成函数(母函数)定义对于一个数列\(a_0,a_1,a_2,a_3\cdots\),定义\(G(x)=a_0+a_1x+a_2x^2+a_3x^3\cdots\)为其母函数(\(x\)充当形式参数没有意义)。母函数是一种形式......
  • typedef函数指针用法
    int(*pf)(char*)是声明了一个名为pf的指针变量,这个指针要指向的是“parameter为char*,返回值为int类型”的函数,若要赋值,如下:#include<stdio.h>int(*pf)(char*);int......
  • go语言函数详解-02
    go语言defer(延迟执行语句)会用延迟执行语句在函数退出时释放资源处理业务或逻辑中涉及成对的操作是一件比较烦琐的事情,比如打开和关闭文件、接收请求和回复请求、加锁和......
  • nim 2. 变量与函数
    对于系统的学习,官网上的相应的资料,这里通过一个简单的例程,演示一下。这个例程里有一个根据半径计算圆面积的方法,以及调用的示例:演示代码1#计算圆的面积2proccalcA......
  • Cesiun 之 CallbackProperty
    CallbackPropertyCesium号称是集显示时空数据于一体的三维引擎。空间数据的展示我们已经见到,对于时间上的数据,我觉得CallbackProperty是最大功臣。因为使用CallbackProper......
  • 【C++】ceil floor round 函数
    https://blog.csdn.net/dangzhangjing97/article/details/81279862?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRL......
  • 函数组件
    //定义函数组件functionHelloFn(){return<div>这是我的第一个函数组件!</div>}//定义类组件functionApp(){return(<divclassName="App">......
  • 使用 async-await 实现一个请求失败自动重新请求的函数
    在项目开发中,需要拉取GA数据放到自己的数据库中,用于做更定制化的数据分析和图表等.但是因为数据较多,GA一次性只能取得10w条数据,所以需要多次请求才能获取到......
  • 构造函数初始化列表
    一.构造函数初始化列表的基本形式构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。第一种:......
  • go语言函数详解-01
    go语言函数声明每一次函数在调用时都必须按照声明顺序为所有参数提供实参(参数值),在函数调用时,Go语言没有默认参数值,也没有任何方法可以通过参数名指定形参,因此形参和返回值......