zoukankan      html  css  js  c++  java
  • 回调函数、递归函数、可重入函数

    参考:http://blog.csdn.net/callmeback/article/details/4242260

    1.什么是回调函数

    回调函数就是一个被作为参数传递的函数。

    因为可以把调用者与被调用者分开,所以调用者不关心谁是被调用者。它只需知道存在一个具有特定原型和限制条件的被调用函数
    回调函数在实际中有许多作用。假设有这样一种情况:我们要编写一个库,它提供了某些排序算法的实现(如冒泡排序快速排序shell排序、shake排序等等),为了能让库更加通用,不想在函数中嵌入排序逻辑,而让使用者来实现相应的逻辑;或者,能让库可用于多种数据类型(int、float、string),此时,可以使用函数指针,并进行回调。
     

    2.回调函数的例子

    #include <stdio.h>
    void printWelcome(int len)
    {
      printf("welcome
    ", len);
    }
    
    void printGoodbye(int len)
    {
      printf("goodbye%d
    ", len);
    }
    
    void callback(int times, void (* print)(int))
    {
      int i;
      for (i = 0; i < times; ++i)
      {
        print(i);
      }
      printf("I am in callback function!
    
    ");
    }
    void main(void)
    {
      callback(10, printWelcome);
      callback(10, printGoodbye);
      printWelcome(5);
    }

    3.递归函数

    编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。递归函数不能定义为内联函数。

    4.可重入函数

    可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的

  • 相关阅读:
    List<T>的使用
    onclientclick和onclick区别
    IOS学习资料
    DataTable排序的一般方法
    jquery特效
    交叉表、行列转换和交叉查询经典
    sql截取查询
    DelPhi学习网站
    EasyDarwin开源云平台接入海康威视EasyCamera摄像机之快照获取与上传
    EasyDarwin开源云平台接入海康威视EasyCamera摄像机之快照获取与上传
  • 原文地址:https://www.cnblogs.com/thinkinglife/p/5121683.html
Copyright © 2011-2022 走看看