C语言常用编程技巧-结构体数组
生活随笔
收集整理的這篇文章主要介紹了
C语言常用编程技巧-结构体数组
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文主要用來記錄C語言常用編程技巧,完成一下目的:
1、函數指針如何定義使用;
2、結構體數組如何定義使用;
3、callback 方法使用技巧;
以下代碼為在ubuntu 系統進行編譯,文件名為 struct.cpp
通過下面指令進行編譯,生成可執行文件 struct gcc struct.c -o struct通過終端執行 ./struct 即可執行程序 #include <stdio.h>//定義方法,對應 cmd_handler_t.cb int add_handler(int a, int b) {printf("%s be invoked!\n", __func__);printf("%s input parameters: a=%d, b = %d\n", __func__, a, b);return (a + b); }//定義方法,對應 cmd_handler_t.cb int sub_handler(int a, int b) {printf("%s be invoked!\n", __func__);printf("%s input parameters: a=%d, b = %d\n", __func__, a, b);return (a-b); }//*類型,cmd_handler_cb存儲函數地址。即函數指針 typedef int (*cmd_handler_cb)(int a, int b);typedef struct cmd_handler{int cmd_id;cmd_handler_cb cb; }cmd_handler_t; //這樣 cmd_handler_t 就可以以新的數據類型的方式進行定義。//定義cmd_id 枚舉類型 enum CMD_ID {CMD_ADD = 0,CMD_SUB,CMD_MAX };//定義結構體數組 static cmd_handler_t g_cmd_handler[2] = {{.cmd_id = CMD_ADD,.cb = add_handler},{.cmd_id = CMD_SUB,.cb = sub_handler}, };int main(int argc, char* argv[]) {printf("Begining of the program!...\n"); int i = 0;int ret = 0;for(i=0; i< CMD_MAX; i++){ret = g_cmd_handler[i].cb(i+10, i+5);printf("for crycle: %d, ret = %d\n", i, ret);}printf("End of the program!...\n");return 0; }?程序執行結果如下:
Begining of the program!...
add_handler be invoked!
add_handler input parameters: a=10, b = 5
for crycle: 0, ret = 15
sub_handler be invoked!
sub_handler input parameters: a=11, b = 6
for crycle: 1, ret = 5
End of the program!...
總結
以上是生活随笔為你收集整理的C语言常用编程技巧-结构体数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android n 原生壁纸,安卓福利:
- 下一篇: 东 北 大 学( 电机拖动X)离线作业