回调函数和递归函数

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

1.什么是回调函数

回调就是一种利用函数指针进行函数调用的过程,使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在回调函数中处理消息或完成一定的操作

2.回调函数的例子

#include <stdio.h>

void printWelcome(int len)
{
printf("»¶Ó­»¶Ó­ -- %d\n", len);
}

void printGoodbye(int len)
{
printf("ËÍ¿ÍËÍ¿Í -- %d\n", len);
}

void callback(int times, void (* print)(int))
{
int i;
for (i = 0; i < times; ++i)
{
print(i);
}
printf("\nÎÒ²»ÖªµÀÄãÊÇÓ­¿Í»¹ÊÇËÍ¿Í!\n\n");
}
void main(void)
{
callback(10, printWelcome);
callback(10, printGoodbye);
printWelcome(5);
}

3.递归函数

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

时间: 2024-12-09 02:33:17

回调函数和递归函数的相关文章

Javascript 中的回调函数和递归函数简单实际分析学习

Javascript 中的回调函数和递归函数简单实际分析学习 1 回调函数 所谓回调函数简单理解就是将一个函数做为参数传递给其他的函数供其使用.(只是在js中,因为其它的语言中有指针这个概念). 举一个简单的例子,当我们在统计账单的时候就要整理材料这些,然后就需要计算器,计算器我们想象成为一个可以实现计算的函数.统计账单是另外的另一个函数,当统计账单的时候就会需要计算器这个函数的支持,其实这就是一个简单的回调.可以按这个理解. 下来我借用网上的一个例子: //先定义一个函数fun1 functi

回调函数、递归函数

回调函数.递归函数 回调函数 回调函数又叫函数回调,指的是将函数作为参数传递到另外的函数中执行.例如将A函数作为参数传递到B函数.然后在B函数中执行A函数.这种做法的好处是在函数被定义之前就可以使用函数,或者对于其他程序提供的API(可看成函数)进行调用.概念比较抽象,看下面例子: def func(num,fun): fun(num) def f1(x): print("这是f1函数",x) def f2(x): print("这是f2函数",x) func(1,

[Effective JavaScript 笔记]第67条:绝不要同步地调用异步的回调函数

设想有downloadAsync函数的一种变种,它持有一个缓存(实现为一个Dict)来避免多次下载同一个文件.在文件已经被缓存的情况下,立即调用回调函数是最优选择. var cache=new Dict(); function downloadCachingAsync(url,onsuccess,onerror){ if(cache.has(url)){ onsuccess(cache.get(url)); return; } return downloadAsync(url,function(

递归与回调函数

递归与回调函数 递归函数 所谓递归函数,就是在函数体内直接或者间接的调用自己本身.使用递归如果稍微处理不当,就会进入死循环.书写递归的时候一定要注意书写出口. 使用递归有一个注意点:虽然我们的递归函数书写起来比较简洁,但是使用递归的效率并不高. 递归示例:阶乘就是n! = 1x2x3...xn  也就是n! = nx(n-1)! 递归函数练习: 使用递归来计算从i加到j 打印多维数组里面的所有元素 回调函数(重点) 所谓回调函数,就是将一个函数作为参数传递给另外一个函数,在另外一个函数里面使用函

嵌入式&amp;iOS:回调函数(C)与block(OC)传 参/函数 对比

C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数. void DSTCount(void(*CallBack)(int data_i32)); callBack.c 1).在doSomeThingCount函数,对运行次数自增,并调用参数--函数. void DSTCount(void(*CallBack)(int data_i32)) { static int numb = 0; numb++; (*Call

回调函数的本质,就是把函数当作参数(首先要定义函数类型)

//把一个方法当作另一个方法的参数, 就是回调方法, 大家习惯称作回调函数 type   TFunType = function(i: Integer): Integer; {声明一个方法类型} function MyFun(i: Integer): Integer;        {建立类型兼容的函数} begin   Result := i*2; end; {把函数当作参数, 再定义一个函数} function MyTest(x: Integer; F: TFunType): Integer

MFC 定时器 SetTimer 如何使用回调函数

创建工程名TestCallBack 自定义回调函数   定义为全局函数 在TestCallBackDlg.h文件开头定义 #pragma once void CALLBACK EXPORT TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime); 在TestCallBackDlg.cpp文件末尾实现函数 void CALLBACK EXPORT TimerProc(HWND hwnd,UINT message,UINT iTimerID

(转)回调函数

原文:http://blog.csdn.net/callmeback/article/details/4242260 其实回调就是一种利用函数指针进行函数调用的过程. 为什么要用回调呢?比如我要写一个子模块给你用,   来接收远程socket发来的命令.当我接收到命令后,   需要调用你的主模块的函数,   来进行相应的处理.但是我不知道你要用哪个函数来处理这个命令,     我也不知道你的主模块是什么.cpp或者.h,   或者说,   我根本不用关心你在主模块里怎么处理它,   也不应该关心

ajax返回的值有两种方法,一种是把async:true改为false。 另一种是回调函数。

function load_val(callback){//定义一个回调函数 $.getJSON('test.php' , function(dat){ callback(data);//将返回结果当作参数返回 }); } load_val(function(data){ alert(data);//这里可以得到值 }); //否则的话你需要这样用同步ajax来实现了 function load_val2(){ var result; $.ajax({ dataType:'json', url