美文网首页java
理解回调函数

理解回调函数

作者: Sunbowbow | 来源:发表于2016-04-07 16:39 被阅读421次

最近经常看到“回调函数”这个概念,但不是很理解。为了弄明白回调函数,提出了以下三个问题:
1.什么是回调函数

回调函数就是一个通过指针调用的函数,如果你把函数指针作为参数传给另一个函数,当这个指针被用来调用所指向的函数时,我们就说这是回调函数。

通俗理解:回调函数和普通函数没有任何区别,只是函数调用时略有区别。一般调用普通函数时,直接写函数名即可;但是在调用回调函数时,是把它作为参数传递给另一个函数。

引用网上用生活场景解释回调函数的一个例子:

比如你显示器不亮了,你不知道怎么弄,那你就问在外地干IT的大表哥,你大表哥告诉你该怎么弄,然后需要你自己来操作。你大表哥知道怎么弄,但却不能自己操作,而是由你来操作。你大表哥告诉你修机器的方法就是回调函数。

2.为什么要用回调函数

回调函数可以把调用者与被调用者分开,调用者不关心谁是被调用者,只需要知道存在一个具有特定原型和限制条件的被调用函数。

从本质上讲,回调函数都是从“你想让别人执行你的代码,而你又不能动别人的代码”这种需求下产生的。因此,只能讲自己实现的函数作为参数传递给别人的函数,这样别人的函数在特定的时候会执行自己的函数。

在面向对象的编程中,回调函数可以让模块间解耦。比如,在一个下载系统中有一个文件下载模块和一个下载文件当前进度显示模块,系统要求实时的显示文件的下载进度。但显示模块不知道也不应该知道下载模块所下载文件的下载进度(面向对象设计的封装性,模块间要解耦,模块内要内聚),文件下载进度是只有下载模块才知道的事情,此时的解决办法是,给下载模块传递一个函数指针作为回调函数驱动显示模块的显示进度。

3.如何使用回调函数
根据以上的理解,自己写了一个简单的回调函数:

#include <stdio.h>
void printEat(int n){
  printf("吃吃吃--%d\\n",n);
}
void printBuy(int n){
  printf("买买买--%d\\n",n);
}

void callback(int times,void(* print )(int)){
  int i;
  for(i = 0; i < times; i++){
    print(i);
  }
}

int main(){
  callback(5,printEat);
  callback(10,printBuy);
  printf("你只知道吃吃吃买买买:]\\n");
  return 0;
}

相关文章

  • JavaScript - 回调函数

    这里我想跟你聊聊我理解的回调函数(callback)。 回调函数,我觉得可以理解成作为参数传递的函数对象。因为在 ...

  • 理解回调函数

    最近经常看到“回调函数”这个概念,但不是很理解。为了弄明白回调函数,提出了以下三个问题:1.什么是回调函数 回调函...

  • JS 回调函数(callback)和递归函数(recursive

    有很多人不理解回调函数和递归函数,我们在这里研究一下。(本文仅适合新人) 什么是回调函数,什么是递归函数 回调函数...

  • JavaScript函数_08回调函数

    回调函数 回调函数(回调),当我们把某个函数作为参数传递给另一个函数的时候,这个函数就是回调函数 回调函数的基本写...

  • Promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数。 回调地狱 回调套回调套回调套回调套回调套回调套回调....

  • 回调函数再理解

    什么是回调函数 精妙比喻:回调函数还真有点像您随身带的BP机:告诉别人号码,在它有事情时Call您回调用于层间协作...

  • 简单理解回调函数

    什么函数才是回调函数?你自己的定义的你没有调用但是最终它还是执行了(在某个时刻或某个条件下) 常见的回调函数?do...

  • 回调函数的理解

    对使用回调函数目的理解 让一个已经写好的程序A调用我们自己写的程序B的某个方法。比如,A是一个封装好的加减法计算器...

  • 通俗理解“回调函数”

    文章转自:angciyu 我们先来看看回调的英文定义: A callback is a function that...

  • 回调函数理解

    1. 什么是回调函数? 回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢?恕我读得书少,没有在那...

网友评论

  • e616f01256e4:“从本质上讲,回调函数都是从“你想让别人执行你的代码,而你又不能动别人的代码”这种需求下产生的。”楼主这句话精辟!!!
  • 秋夜已凉:写的很好!

本文标题:理解回调函数

本文链接:https://www.haomeiwen.com/subject/liamlttx.html