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

  • 相关阅读:
    k8s 基础 pod操作
    python 字典 get 小例子
    linux 日志
    python 基础 文件操作
    k8s 基础 k8s架构和组件
    k8s 基础 核心概念
    HDU1272--小希的迷宫(并查集)
    POJ1182--食物链(经典并查集)并查集看不出来系列2
    HDU 3038 How Many Answers Are Wrong (并查集)---并查集看不出来系列-1
    二分快速幂
  • 原文地址:https://www.cnblogs.com/thinkinglife/p/5121683.html
Copyright © 2011-2022 走看看