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语言常用编程技巧-结构体数组相关推荐
- 【☀️C语言函数传参の结构体数组篇☀️】
背景介绍 C语言中函数参数传递的两种方式("引用传递做函数参数"是C++的特性,C语言不支持.) (1)传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个 ...
- C语言学生管理系统(结构体数组)
简介 简单的学生管理系统,使用C语言编写. 功能 拥有增.删.改.查.打印.文件读写.搜索以及排序功能. 环境 推荐使用VS2015或以上版本(支持C11或以上)的编译器运行代码. 结构 数据结构为结 ...
- C语言高级编程:结构体中定义数组的“妙用”
1. 说明 1)相同类型结构体变量可以直接赋值 2)在结构体中定义一个数组,可以用赋值语句拷贝整个数组,这也是数组间赋值的一个间接实现方式 3)在结构体中定义一个数组,可以传值调用的方法把它传递给函数 ...
- c语言读取文件到结构体数组,有关文件读写到结构体数组问题;
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 typedef struct IMG { char *name; int weight; int height; }IMG; 这是我的结构体存的是 图片的 ...
- C语言编程题—结构体—设计程序,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数 fun:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分
4 C语言编程题--结构体 **设计程序,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中.请编写函数 fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有 ...
- C语言编程>第十二周 ③ 已知学生的记录由学号和学习成绩构成,M名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数。
已知学生的记录由学号和学习成绩构成,M名学生的数据已存入a结构体数组中.请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分).已给出函数的首部,请完成该函 ...
- C语言编程>第十三周 ⑧ 已知学生的记录由学号和学习成绩组成,M名学生的数据已存入stu结构体数组中。请编写函数fun,该函数的功能是:
例题:已知学生的记录由学号和学习成绩组成,M名学生的数据已存入stu结构体数组中.请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分).已给出函数的首部, ...
- C语言编程>第十八周 ⑧ 给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
例题:给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列. 注意:请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句. 代码如 ...
- c语言将结构体存储在数组中,结构体数组方法用法 _C语言-w3school教程
C语言 的 结构体数组 在C语言编程中可以将一系列结构体来存储不同数据类型的许多信息. 结构体数组也称为结构的集合. 我们来看一个数组结构体的例子,存储5位学生的信息并打印出来.创建一个源文件:str ...
最新文章
- linux内核设备管理典型算法,linux内核物理存储空间管理有哪些常用算法
- centos 禁用root登录
- HttpHandler动态生成图片
- 再探ChannelPipeline 的初始化
- C# VS生成后事件命令行
- jdk12源代码文件_在JDK 11中启动单文件源代码程序
- [css] 分析比较opacity: 0、visibility: hidden、display: none三者的优劣和适用场景
- 化妆definer是什么意思_我们为什么说隔离霜是个智商税的东东!
- Docker 持续推动创新,三款应用为您指引未来趋势
- PHP计算GPS路书,搜狗地图推出路书功能 免费而智能的GPS
- C语言乘法口诀表代码
- Win32无边框窗口
- 县城中学计算机教师就业难吗,我县中小学信息技术教师现状及对策
- CRC循环冗余校验是如何纠错的
- Win 10镜像下载和Win 10重装系统
- RENIX 软件RAW流发送——网络测试仪实操
- 别人问你工资多少时,怎么回答!
- 关联规则----Apriori算法以及代码实现
- mathmodel4
- 分享社交平台功能开源_需要考虑的3个开源社交平台