• 回调函数、递归函数、可重入函数


    参考: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调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的

  • 相关阅读:
    【转】Windows Server 2003为什么识别不了的移动硬盘
    VBSCRIPT常用函数【转】
    【轉】javascript实现图片缩略与优化
    【转】Tips:禁用Windows Beep声
    EXT同struts2后台交互一个中文问题
    ASCII码对照表[转]
    bat判断进程存在不存在
    look与look like
    美国俚语there was no snap in his turtle
    take credit for用法
  • 原文地址:https://www.cnblogs.com/thinkinglife/p/5121683.html
Copyright © 2020-2023  润新知