本帖最后由 豌豆爹 于 2023-8-22 15:46 编辑
函数是C语言的核心概念。主调函数(caller)调用被调函数(callee)是一般的调用关系,如果被调函数(callee)参数包含函数指针,函数指针还可以形成多一层的调用关系,形成第三方函数的调用,专业术语称为回调(callback),通过函数指针参数调用的第三方函数称为回调函数。
回调可以让被调函数(这里是指用函数指针做函数参数的函数)的代码更加泛化或抽象,能够简单模拟其它编程语言的委托与反射语法。
1、简单模拟委托
登录后复制
//C语言简单模拟委托
//需要用的指针函数。通过用指针函数作为地址接收函数地址,以达到委托其他函数实现某方法的目的。
#include <stdio.h>
typedef void(* fun)(); //typedef 把void(*)()类型重命名为fun
void func(fun); // 被调函数
void func_1(); // 回调函数1
void func_2(); // 回调函数2
int main() // 主函数用做主调函数
{
func(func_1);
fun f = func_2;
f();
func(func_1);
func(func_2);
getchar();
return 0;
}
void func(fun f) //fun f为地址,fun * f为f指向的地址的量或者其他
{
printf("func\n");
if (f != NULL)
{
f();
}
}
void func_1()
{
printf("func_1\n");
}
void func_2()
{
printf("func_2\n");
}
/*
func
func_1
func_2
func
func_1
func
func_2
*/
|