首页 > 编程语言 > 详细

【C语言天天练(七)】回调函数

时间:2014-06-18 12:37:11      阅读:342      评论:0      收藏:0      [点我收藏+]

想要全面的了解一个概念,必须至少了解它的三点:它是什么、它有什么用、它在什么时候用。对于回调函数,同样从三个方面了解它。

1、什么是回调函数?

2、回调函数该如何使用? 

3、回调函数在什么情况下使用?


答案一:

回调函数:见名知意,首先肯定的一点是它是一个函数,修饰词回调指的是程序员自己定义一个函数并实现它的程序内容,然后把这个函数的指针作为参数传递给其他函数(如系统函数)中,由其他函数(如系统函数)在运行时调用所实现的函数。函数是程序员自己实现的,但却是由其他函数(如系统函数)在运行时通过参数传递的方式调用的,这就是回调函数。简单一句话就是:由别人的函数运行期间来回调你实现的函数。

答案二:

示例1:

#include <stdio.h>  
#include <stdlib.h>  
  
int fun1(void)  
{  
    printf("hello world.\n");  
    return 0;  
}  
  
void callback(int (*Pfun)())  
{  
    Pfun();  
}  
  
int   
main(void)  
{  
    callback(fun1);  
}
callback回调定义的函数fun1,传递给callback的是函数fun1的地址。fun1是一个不含参数返回值为整型的函数,如果fun含有参数,还想使用回调函数则可用下面的示例2。


示例2:

#include <stdio.h>
#include <stdlib.h>

int fun2(char *s)
{
	printf("%s.\n", s);
	return 0;
}
void callback(int (*Pfun)(char *), char *s)
{
	Pfun(s);
}

int
main(void)
{
	callback(fun2, "hello world");
	return 0;
}

答案三(引用):

如果想知道回调函数在实际中有什么作用,先假设有这样一种情况,我们要编写一个库,它提供了某些排序算法的实现,如冒泡排序、快速排序、shell排序、shake排序等等,但为使库更加通用,不想在函数中嵌入排序逻辑,而让使用者来实现相应的逻辑;或者,想让库可用于多种数据类型(int、float、string),此时,该怎么办呢?可以使用函数指针,并进行回调。

【C语言天天练(七)】回调函数,布布扣,bubuko.com

【C语言天天练(七)】回调函数

原文:http://blog.csdn.net/to_be_it_1/article/details/31381353

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!