本文主要用来记录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语言常用编程技巧-结构体数组相关推荐

  1. 【☀️C语言函数传参の结构体数组篇☀️】

    背景介绍 C语言中函数参数传递的两种方式("引用传递做函数参数"是C++的特性,C语言不支持.) (1)传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个 ...

  2. C语言学生管理系统(结构体数组)

    简介 简单的学生管理系统,使用C语言编写. 功能 拥有增.删.改.查.打印.文件读写.搜索以及排序功能. 环境 推荐使用VS2015或以上版本(支持C11或以上)的编译器运行代码. 结构 数据结构为结 ...

  3. C语言高级编程:结构体中定义数组的“妙用”

    1. 说明 1)相同类型结构体变量可以直接赋值 2)在结构体中定义一个数组,可以用赋值语句拷贝整个数组,这也是数组间赋值的一个间接实现方式 3)在结构体中定义一个数组,可以传值调用的方法把它传递给函数 ...

  4. c语言读取文件到结构体数组,有关文件读写到结构体数组问题;

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 typedef struct IMG { char *name; int weight; int height; }IMG; 这是我的结构体存的是 图片的 ...

  5. C语言编程题—结构体—设计程序,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数 fun:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分

    4 C语言编程题--结构体 **设计程序,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中.请编写函数 fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有 ...

  6. C语言编程>第十二周 ③ 已知学生的记录由学号和学习成绩构成,M名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数。

    已知学生的记录由学号和学习成绩构成,M名学生的数据已存入a结构体数组中.请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分).已给出函数的首部,请完成该函 ...

  7. C语言编程>第十三周 ⑧ 已知学生的记录由学号和学习成绩组成,M名学生的数据已存入stu结构体数组中。请编写函数fun,该函数的功能是:

    例题:已知学生的记录由学号和学习成绩组成,M名学生的数据已存入stu结构体数组中.请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分).已给出函数的首部, ...

  8. C语言编程>第十八周 ⑧ 给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。

    例题:给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列. 注意:请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句. 代码如 ...

  9. c语言将结构体存储在数组中,结构体数组方法用法 _C语言-w3school教程

    C语言 的 结构体数组 在C语言编程中可以将一系列结构体来存储不同数据类型的许多信息. 结构体数组也称为结构的集合. 我们来看一个数组结构体的例子,存储5位学生的信息并打印出来.创建一个源文件:str ...

最新文章

  1. linux内核设备管理典型算法,linux内核物理存储空间管理有哪些常用算法
  2. centos 禁用root登录
  3. HttpHandler动态生成图片
  4. 再探ChannelPipeline 的初始化
  5. C# VS生成后事件命令行
  6. jdk12源代码文件_在JDK 11中启动单文件源代码程序
  7. [css] 分析比较opacity: 0、visibility: hidden、display: none三者的优劣和适用场景
  8. 化妆definer是什么意思_我们为什么说隔离霜是个智商税的东东!
  9. Docker 持续推动创新,三款应用为您指引未来趋势
  10. PHP计算GPS路书,搜狗地图推出路书功能 免费而智能的GPS
  11. C语言乘法口诀表代码
  12. Win32无边框窗口
  13. 县城中学计算机教师就业难吗,我县中小学信息技术教师现状及对策
  14. CRC循环冗余校验是如何纠错的
  15. Win 10镜像下载和Win 10重装系统
  16. RENIX 软件RAW流发送——网络测试仪实操
  17. 别人问你工资多少时,怎么回答!
  18. 关联规则----Apriori算法以及代码实现
  19. mathmodel4
  20. 分享社交平台功能开源_需要考虑的3个开源社交平台

热门文章

  1. android四大组件之Activity(三)
  2. 素问之一上古天真论篇
  3. 高等数学上核心概念:谈谈导数,微分,积分之间的关系(微分篇)
  4. 什么是激光雷达的“发动机技术”?一文讲透行业技术壁垒
  5. 信号处理与分析-确定性信号的分析
  6. SpringBoot访问jar包静态文件
  7. 古典风端午节介绍PPT模板
  8. 2021年美容师(中级)多少分及格及美容师(中级)考试技巧
  9. 雨林木风 Ghost Win7 SP1 快速装机版 (32位)
  10. 如何向别人介绍你做的东西