二维数组(结构体数组里嵌套结构体数组)

接上一篇文章,函数、指针、数组(2),我们聊过了函数、指针、数组混搭结果:指针数组 数组指针 指针函数 函数指针 函数指针数组。本文主要讲述在工程中我们常用的结构体数组,主要应用场景,IF初始化等集成度比较的复用函数接口。

下面来看个例子,

/**
  * 电机驱动电流配置结构 
  */
typedef struct _st_STmIcPrm
{
	u16 	Ips10x;
	u16		SpdIdx;
	u16		Ic_mA;
} st_STmIcPrm;

typedef struct _st_STmIcPrm_info
{
	st_STmIcPrm *IcPrm;
	u8 size;
	
}st_STmIcPrm_info;

st_STmIcPrm PFM_SPD_2_CUR[6] =
{
	// Ips10x  SpdIdx   Ic_mA
	{  20, 		0, 		 1800 },		// 0
	{  30, 		0, 		 1800 },		// 1
	{  40, 		0, 		 1800 },		// 2
	{  50, 		0, 		 1800 },		// 3
	{  60, 		0, 		 1800 },		// 4
    {  80, 		0, 		 1800 },		// 5

};

st_STmIcPrm PFM_SPD_2_CUR1[6] =		//二维数组
{
	// Ips10x  SpdIdx   Ic_mA
	{  20, 		0, 		 1000 },		// 0
	{  30, 		0, 		 1200 },		// 1
	{  40, 		0, 		 1500 },		// 2
	{  50, 		0, 		 1500 },		// 3
	{  60, 		0, 		 1600 },		// 4
    {  80, 		0, 		 1800 },		// 5
	
};

st_STmIcPrm_info PFM_SPD_2_CUR_LIST[2] =
{
	{PFM_SPD_2_CUR ,ARRAY_SIZE(PFM_SPD_2_CUR)},	//走纸定位
	{PFM_SPD_2_CUR1,ARRAY_SIZE(PFM_SPD_2_CUR1)},//正常使用
};

1.要求通过查表的方式取出PFM_SPD_2_CUR_LIST数组中所有的值,

static void *PFmCurrentSet(CMDCTRL *pCtrl)
{
	extern st_STmIcPrm_info PFM_SPD_2_CUR_LIST[2];
	st_STmIcPrm *IcPrmIdx;
	u16 Ic_mA = 0;
    u8 i, j,cnt,items;
    
	cnt =(u8)ARRAY_SIZE(PFM_SPD_2_CUR_LIST);
	for(i=0;i<cnt;i++){
		IcPrmIdx = PFM_SPD_2_CUR_LIST[i].IcPrm;
		items	 = PFM_SPD_2_CUR_LIST[i].size;
		CONSOLE_TRACE("PFM Drive Current Table:%d\r\n",i);
		CONSOLE_STR(" No.   IPS     mA\r\n");
		CONSOLE_STR("-------------------\r\n");

		for (j = 0; j < items; j++) {
			
			CONSOLE_TRACE("  %d    %d.%d   %4d\r\n", j,
				IcPrmIdx->Ips10x/10,IcPrmIdx->Ips10x%10,IcPrmIdx->Ic_mA);
			IcPrmIdx++;

		}
	}
	CONSOLE_STR("\r\n");
}

编译输出:
在这里插入图片描述
2.要求通过指针修改表的值

(PFM_SPD_2_CUR_LIST[i].IcPrm)->Ic_mA= Ic_mA;

总结:
本文主要是和大家分享结构体类型数组的创建和赋值,更多的用法大家可以去发挥自己的脑洞。

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炒番茄蛋的厨子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值