[C语言]数据结构
STRUCT
结构体
struct tag {
member-list
member-list
member-list
...
} variable-list ;
位域
struct 位域结构名
{
位域列表
};
example:
struct bs{
int a:8;
int b:2;
int c:6;
}data;
ERUM
枚举语法定义格式
enum 枚举名 {枚举元素1,枚举元素2,……};
回调函数
Define&Use
别人的函数运行期间来回调你实现的函数
- 使用者自己定义函数 selfdefinefunc(){},实现这个函数的程序内容
- 将函数 selfdefinefunc(){},作为参数传入别人的函数serverfunc(){}中
- 别人的函数在runtime通过parameter(* self_define_func())参数传递的方式调用
C语言中回调函数主要通过函数指针的方式实现
#include <stdio.h>
typedef void (*FP)(char* s); //结构体表示函数指针
void f1(char* s){printf("A: %s",s);}
void f2(char* s){printf("B: %s",s);}
void f3(char* s){printf("C: %s",s);}
int main(int argc,char* argv[])
{
int funcselector = 0; //定义一个整数用于控制待执行的函数
FP f[]={f1,f2,f3}; //定义一个函数指针的数组,这里的f是一个函数指针
/* Handle of funselector */ //此处用于处理funselector,控制待执行的函数
f[funcselector]("Hello World!\n"); //正确,函数指针的数组进行下标操作可以进行函数的间接调用
return 0;
}
结构解析
回调函数主要结构有三部分组成:主函数、调用函数和被调用函数
C语言中,被调函数通常以函数指针的形式出现
//定义回调函数
void PrintfText()
{
printf("Hello World!\n");
}
//定义实现回调函数的"调用函数"
void CallPrintfText(void (*callfuct)())
{
callfuct();
}
//实现函数回调
int main(int argc,char* argv[])
{
CallPrintfText(PrintfText);
return 0;
}
网友评论