c++如何定义二维数组结构体_原来数组还可以这么玩(宏把数组玩坏了)
点击上方公众号名称关注,获得更多内容
✎ 编 者 悟 语
想起青春追寻的昨天,你也是曾经追风的少年。
文 章 导 读
今天给小伙伴们介绍下用宏对数组值进行分类使用的方式,比较大的程序中的寄存器经常会这么搞,你也可以在自己的程序中使用这种代码组织方式让结构更加清晰,希望对小伙伴们有所帮助哈,!
1数组和宏勾搭到一起的效果
在一些大的程序中,你会发现一些初看之下不知道它要干什么,但仔细探究一下你会发现,那可能是一种好的程序架构或考虑。
将数组要复制的值进行同类型封装,通过实例查找函数通过数组去查找实例并进行操作,可以让代码结构更清晰,更有规律可循。
具体的形式看下面的代码吧,说两句只为让小伙伴们多注意一下撸代码时的意识,要有大局观,要有架构意识。
2实例代码
ArrayMacro.h如下,它的作用如何,说明在注释里了哈。
#ifndef _ARRAYMACRO_H_#define _ARRAYMACRO_H_
/* 实际的在比较的程序或芯片的官方代码中,会将相关的寄存器操作用宏放到一起,作为数组值 下面的数值或字符可以换成宏,然后通过移位屏蔽置位等方式去做配置寄存器等的操作 程序为了演示的方便,数组元素为数字或字符 */
/* 例如CAN时钟开启可以如下定义,其中kCLOCK_Can1等的是枚举值,有具体的定义
#define FLEXCAN_CLOCKS \ { \ kCLOCK_IpInvalid, kCLOCK_Can1, kCLOCK_Can2 \ }
static const clock_ip_name_t s_flexcanClock[] = FLEXCAN_CLOCKS;
*/
// -1占位 #define OneDimArray_one \ { \ -1, \ 1, \ 2, \ 3 \ }
// 直接的写法 #define OneDimArray_two { '-1','a','b','c' }
#define TwoDimArray \ { \ {-1,-1,-1}, \ {11,22,33}, \ {44,55,66}, \ {77,88,99} \ }
#endif _ARRAYMACRO_H_
ArrayMacro.c代码如下。
#include #include
#include "ArrayMacro.h"
int main(int argc, char *argv[]) {
int i,ii,j,k;
int o_OneDimArray[] = OneDimArray_one; int t_OneDimArray[] = OneDimArray_two; int s_TwoDimArray[][4] = TwoDimArray;
// 下面的循环就是做些遍历查找的工作,在实际代码中,你可以取做些配置等的操作 for(i = 0; i { if(3 == o_OneDimArray[i]) { printf("\n一维数组查找值:%d\n",i); printf("do something!\n"); }
}
for(ii = 0; ii {
if('a' == t_OneDimArray[ii]) { printf("\n一维数组查找字符值:%c\n",t_OneDimArray[ii]); printf("do something!\n"); }
}
for(j = 0; j {
for(k = 0; k { if(77 == s_TwoDimArray[j][k]) { printf("\n二维数组查找值:%d\n",s_TwoDimArray[j][k]); printf("do something!\n"); } }
}
return 0;}
运行结果如下。
总结
今天给小伙伴们介绍了用宏对数组值进行分类使用的方式,大家可以在自己的程序中去试试哈,这种代码组织方式让结构更加清晰。后面还会有C语言相关的内容,大家敬请期待哈,。
有问题可以后台留言交流,公众号18年后新申请的,文章后不支持留言功能的。
相关文章:
利用结构数组和函数指针查找法调用函数
用掩码数组和枚举增强C代码的可读性
编程意识篇——用结构存储数据以减少函数二次调用,能替代return返回值吗
C语言中一个分号的奇迹(预处理、指针、结构体、内存分配)——一段暗藏玄机的代码
malloc为什么不能在函数体外给全局变量分配内存
宏分类的妙用(排版开始用模板)
用结构体和指针模拟配置芯片引脚输出高低电平
进化论——从函数指针到被结构封装的函数指针及参数的应用举例
专辑推荐:
Python技能专辑
C语言专辑
IDE调试专辑
软件推荐专辑
软实力专辑
Linux专辑
扫码关注我们
❖Game Over!
c++如何定义二维数组结构体_原来数组还可以这么玩(宏把数组玩坏了)相关推荐
- c++ new一个结构体_「C/C++」构造类型及应用:数组、结构体、共用体、枚举类型...
3.1数组 同类型.同性质.按顺序存放的一组数据集合,易于批量处理. 3.1.1一维数组 定义 int 1.数组名为常量,指向首地址,由系统指定. 2.数组长度为整型常量,但不能为0 3.上例取值im ...
- 技术图文:如何在Python中定义二维数组?
背景 前几天,有位同学问我如下的问题: "temp[0][0]修改后,为什么temp[1][0].temp[2][0]也发生了变化?" "在Python中二维数组是怎样定 ...
- C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例
C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例 目录 一.简单介绍 二.结构体定义和使用 三. ...
- C语言自定义数据类型(二)使用结构体数组
一个结构体变量中可以存放一组有关联的数据(如一个学生的学号.姓名.成绩等数据).如果有 10 个学生的数据需要参加运算,显然应该用数组,这就是结构体数组.结构体数组与以前介绍过的数值型数组的不同之处在 ...
- C/C++定义二维数组(矩阵)
1. 确定维度定义 int rows=4; int cols=5; int n2Arr[rows][cols];//错误,矩阵维度必须为常数 int n2Arr[4][5]; //正确,定义了4*5的 ...
- 【转】java中定义二维数组的几种写法
原文链接 注:以下的 type[][] var 也可以这样申明 type var[][] type为数组的类型,var为变量名 写法一:行列固定的数组 //定义二维数组写法1 class Test { ...
- 关于定义二维数组时为什么可以省略行,而不可以省略列
最近在复习c语言,看到二维数组的定义时,有省略行的定义方法,如arr[][10],但为什么没有省略列的定义方法呢? 我个人理解是:将一个二维数组看成若干一维数组,每一行就是一个一维数组,而二维数组的列 ...
- 【C++】结构体 - 定义和使用,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,结构体 const
文章目录 1. 定义和使用 2. 结构体数组 3. 结构体指针 4. 结构体嵌套结构体 5. 结构体做函数参数 6. 结构体 const 1. 定义和使用 结构体属于用户自定义的数据类型,允许用户存储 ...
- C语言结构体的定义与使用、结构体数组、指向结构体的指针(有代码详解)
1.结构体的定义与使用 结构体是一种构造数据类型 把不同类型的数据组合成一个整体 结构体的定义形式: struct 结构体名{结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数 ...
最新文章
- 如何在 Linux 上使用 kill 和 killall 来管理进程
- Java 设计模式 --- 单例模式
- JMX:一些入门说明
- 5.4万Star全部归零,项目作者:十分后悔
- bzoj 1601: [Usaco2008 Oct]灌水(最小生成树)
- 【软件解决】 解决 TortoiseSVN 图标不显示问题
- java strtus2 DynamicMethodInvocation配置(二)
- nslookup java_使用JAVA实现nslookup命令
- 飞鱼星路由器常见问题解答
- Operations-ansible-01
- 使用GF集进行构型综合的方法之总结
- JAVA接入微信刷脸支付分支付【V2、V3两种接入都有提供】
- 激光 pm2.5传感器 攀藤科技 stm32 调试通过
- 科学教育类毕业论文文献都有哪些?
- 自己动手,组建简单好用的NAS!(上)
- Java安卓如何添加悬浮窗_Android桌面悬浮窗效果实现
- 职业教育增长,正在“电商化”
- winwebmail的设置方法
- 中国软件开发外包公司排名-国内最大的软件开发商有哪些呢
- 寻找合适的研发效能度量指标(中)