[C語言]數(shù)據(jù)結構
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,……};
回調函數(shù)
Define&Use
別人的函數(shù)運行期間來回調你實現(xiàn)的函數(shù)
- 使用者自己定義函數(shù) selfdefinefunc(){}扩然,實現(xiàn)這個函數(shù)的程序內容
- 將函數(shù) selfdefinefunc(){}艾凯,作為參數(shù)傳入別人的函數(shù)serverfunc(){}中
- 別人的函數(shù)在runtime通過parameter(* self_define_func())參數(shù)傳遞的方式調用
C語言中回調函數(shù)主要通過函數(shù)指針的方式實現(xiàn)
#include <stdio.h>
typedef void (*FP)(char* s); //結構體表示函數(shù)指針
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; //定義一個整數(shù)用于控制待執(zhí)行的函數(shù)
FP f[]={f1,f2,f3}; //定義一個函數(shù)指針的數(shù)組凉袱,這里的f是一個函數(shù)指針
/* Handle of funselector */ //此處用于處理funselector,控制待執(zhí)行的函數(shù)
f[funcselector]("Hello World!\n"); //正確,函數(shù)指針的數(shù)組進行下標操作可以進行函數(shù)的間接調用
return 0;
}
結構解析
回調函數(shù)主要結構有三部分組成:主函數(shù)召烂、調用函數(shù)和被調用函數(shù)
C語言中贸街,被調函數(shù)通常以函數(shù)指針的形式出現(xiàn)
//定義回調函數(shù)
void PrintfText()
{
printf("Hello World!\n");
}
//定義實現(xiàn)回調函數(shù)的"調用函數(shù)"
void CallPrintfText(void (*callfuct)())
{
callfuct();
}
//實現(xiàn)函數(shù)回調
int main(int argc,char* argv[])
{
CallPrintfText(PrintfText);
return 0;
}