在计算机程序设计中,回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数)。回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。回调函数使用是必要的,在我们想通过一个统一接口实现不同的内容,这时用回调函数非常合适。
下面举一个C语言中回调函数的例子,说明回调函数之用法。
#include <stdio.h> void print_min_value(int i, int j) { int tmp = i; if(i>j) tmp = j; printf("print_min_value is called\n"); printf("min value is:%d\n", tmp); } void print_max_value(int i, int j) { int tmp = i; if(i<j) tmp = j; printf("print_max_value is called\n"); printf("max value is:%d\n", tmp); } void call_then_back(int i, int j, void(*callback)(int, int)) { callback(i, j); } int main(void) { int m = 2, n = 3; call_then_back(m, n, print_min_value); call_then_back(m, n, print_max_value); return 0; }
运行结果:
print_min_value is called min value is:2 print_max_value is called max value is:3