二、回调函数

作者:解琛
时间:2020 年 9 月 11 日

回调函数

函数指针变量可以作为某个函数的参数来使用的,回调函数就是一个通过函数指针调用的函数。

populate_array 函数定义了 3 个参数,其中第 3 个参数是函数的指针,通过该函数来设置数组的值。

populate_array(myarray, 10, getNextRandomValue);

getNextRandomValue 不能加括号,否则无法编译,因为加上括号之后相当于传入此参数时传入了 int , 而不是函数指针。

我们定义了回调函数 getNextRandomValue,它返回一个随机值,它作为一个函数指针传递给 populate_array 函数。

#include <stdlib.h>  int getNextRandomValue(void)
{return rand();
}

populate_array 将调用 10 次回调函数,并将回调函数的返回值赋值给数组。

void populate_array(int *array, size_t arraySize, int (*getNextValue)(void))
{for (size_t i=0; i<arraySize; i++)array[i] = getNextValue();
}

完整的代码如下。

#include <stdlib.h>
#include <stdio.h>void populate_array(int *array, size_t arraySize, int (*getNextValue)(void));
int getNextRandomValue(void);int main(void)
{int myarray[10];populate_array(myarray, 10, getNextRandomValue);for(int i = 0; i < 10; i++) {printf("%d: %d\n", i, myarray[i]);}return 0;
}void populate_array(int *array, size_t arraySize, int (*getNextValue)(void))
{for (size_t i = 0; i < arraySize; i++)array[i] = getNextValue();
}int getNextRandomValue(void)
{return rand();
}

执行结果如下。

xiechen@xiechen-Ubuntu:~/6.本地实验中心/3.c$ gcc 1.回调函数.c
xiechen@xiechen-Ubuntu:~/6.本地实验中心/3.c$ ./a.out
0: 1804289383
1: 846930886
2: 1681692777
3: 1714636915
4: 1957747793
5: 424238335
6: 719885386
7: 1649760492
8: 596516649
9: 1189641421

[C] 二、回调函数相关推荐

  1. C++回调函数用法(zt)

    一回调函数 我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理.用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函 ...

  2. C语言 回调函数 callback - C语言零基础入门教程

    目录 一.回调函数原理 二.回调函数简介 1.函数指针 2.指针函数 3.回调函数解释 三.回调函数实战 四.回调函数使用总结 五.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 ...

  3. ES6/02/创建对象,构造函数和原型,原型和原型链,this指向,类,ES5新增的方法,数组方法,回调函数,ES5新增的字符串方法,ES5中新增的对象方法

    创建对象 1,利用new Object()创建对象 var obj1 =new Object(); 2,利用对象字面量创建对象 var obj2={}; 3,利用构造函数创建对象 function S ...

  4. js中的回调函数,什么是回调函数?

    一. 回调函数的作用 js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数. 二. 回调函数的解释 因为函数实际上是一种对象,即是内置对象 ...

  5. ajax回调方法名使用什么事件,ajax的回调函数和匿名函数

    1.什么是js回调函数 一. 回调函数的作用 js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数. 二. 回调函数的解释 因为函数实际上 ...

  6. js中的回调函数的理解和使用方法

    一. 回调函数的作用 js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数. 二. 回调函数的解释 因为函数实际上是一种对象,它可以存储在 ...

  7. javascript中回调函数的理解和应用

    一. 什么是回调函数? 被作为实参传入另一函数,并在该外部函数内被调用,用以来完成某些任务的函数,称为回调函数. function f1(fn) {let a =1;console.log(a,'a' ...

  8. Javascript(二)——函数(重载、回调)与作用域(附图解)

    文章目录 一.函数 1.1函数的本质 1.2创建函数 1) 声明方式 function 2) 赋值方式 3)new创建--几乎不用 4)ES5-create()方法 1.2 递归 1.3 重载函数 1 ...

  9. http调用如何返回回调函数_Simulink(模型amp;函数调用发生模块)+Guide自写简单系统(五)+StateflowChart回调函数 (二)...

    Simulink:模型&函数调用发生模块 如下所示为模型模块以及函数调用发生模块: 使用模型模块可以双击在模块中选择具体路径中的文件进行配置:在使用时即可对模型提供一个链接的路径: 运行时效果 ...

  10. 深度学习自学(二十八):Altas人脸SDK实现之-回调函数

    一.回调概念 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调 ...

最新文章

  1. 1.Pytorch Basics
  2. 《机器学习实战》第5章 随机梯度上升算法
  3. spring4声明式事务--01注解方式
  4. Linux系统之创建逻辑卷
  5. 2019年如何打造自己的“前端品牌”
  6. FocalLoss的Caffe复现版
  7. idea @Autowired 注入爆红(无法注入)
  8. Android之webview长按超链接类型获取链接文字及url、长按图片链接类型分别获取图片和链接的url
  9. [渝粤教育] 中国地质大学 嵌入式操作系统 复习题 (2)
  10. Java 工具类 - MD5Util
  11. 思维导图_教学工具思维导图
  12. flex自定义更新UI
  13. mysql08---优化01
  14. Cisdem PDF Password Remover for mac(PDF文件解密工具)
  15. mysql 查询语法基础_入门MySQL——查询语法练习
  16. idea配置Idea类注释模板和方法注释模板(亲测有效)
  17. 8篇论文详解用户历史行为序列建模方法
  18. MQTT协议从服务端到客户端详解
  19. win10老是弹出计算机管理器,win10系统Ie11老是弹出“管理加载项”提示框取消的处理办法...
  20. 校园地图设计——任意两点间的算法优化流程与while搭配switch语句的bug解读

热门文章

  1. 滴答顺风车怎么抢90%以上的订单_顺风车,又来了!!!
  2. [项目管理] 需求评审6大灵魂拷问
  3. 牛客小白月赛24 D 牛妹吃豆子(二维差分+前缀和)
  4. 《花开半夏》--6 选择(2)
  5. 2019-11-22 C++17filesystem相关问题解决
  6. Linux ❀ RHCE自研教学笔记 - Redhat 8.2 SeLinux服务教研笔记
  7. gitbook 插件
  8. 国内大型门户网站架构分析-静态化网站架构
  9. VO、BO、PO、DO、DTO的区别
  10. RTC拥塞控制算法GCC和BBR总结