【发布时间】:2015-05-22 18:37:10
【问题描述】:
我正在学习 C 中的回调函数,发现自己太难理解了 回调的概念。
据我所知,回调函数是使用 c 中的函数指针实现的,这意味着 我们可以通过使用指针来引用函数,就像我们使用指针一样 引用一个变量。
我这里有两个函数实现:
1.首先是使用回调函数
#include <stdio.h>
int add_two_number(int a, int b);
int call_func(int (*ptr_func)(int, int), int a, int b);
int main (int *argc, char *argv[])
{
printf("%d", call_func(add_two_number, 5, 9));
return 0;
}
int add_two_number(int a, int b)
{
return a + b;
}
int call_func(int (*ptr_func)(int, int), int a, int b)
{
return ptr_func(a, b);
}
2.二是使用普通函数调用:
#include <stdio.h>
int add_two_number(int a, int b);
int call_two_number(int a, int b);
int main (int *argc, char *argv[])
{
printf("%d", call_two_number(5, 9));
return 0;
}
int add_two_number(int a, int b)
{
return a + b;
}
int call_two_number(int a, int b)
{
return add_two_number(a, b);
}
这两个函数在两个数字和这两个数字之间进行简单的数学加法 功能也可以正常工作。
我的问题是这两者有什么区别?当我们使用回调而不是普通函数时?
【问题讨论】: