[M3] 结构体内定义大数组到底好不好?

[复制链接]
1210|5
 楼主 | 2018-7-19 09:29 | 显示全部楼层 |阅读模式
如题,举个简单的例子
第一种方式:
typedef struct
{
     u8 i;
     u8 temp[5000];
}A;

第二种方式:

typedef struct
{
     u8 i;
     u8* temp;
}AA;

u8 num[5000];
AA sTU;

sTU.temp = num;

以上两种方式,哪一种更好, 为什么呢?
| 2018-7-19 09:37 | 显示全部楼层
没有什么不好,看具体应用吧
第二种灵活点,但第一种简单点
| 2018-8-8 13:58 | 显示全部楼层
平时看不出来  如果结构体作为函数传递的时候可能就看出来了
| 2018-9-7 12:07 | 显示全部楼层
Vansm 发表于 2018-8-8 13:58
平时看不出来  如果结构体作为函数传递的时候可能就看出来了

大结构体最好还是用指针作为传递吧
| 2018-9-12 10:22 | 显示全部楼层
你的这个两种方式没什么区别。都不会节省内存。、
应该这样子
typedef struct
{
     u8 i;
     u8 temp[0];
}A;
结构体变成了可变大小。
| 2019-1-2 15:40 | 显示全部楼层
遵循对象原则。
第一种情况:那个大数组跟成员i是属于一个整体的,就应用第一种方式。此时只要申请一个结构变量,它就必须带一个大数组,大数组是这个对象不可分割的一部分,如果要使用指针,就另外定义结构体指针。当然,指针的大小与大数组就没有关系了,是MCU固有的。
第二种情况:那个大数组并不是某个对象固有的,而只是某一类对象所共用或共享的,大数组只是一个公共数据池,则对象可以按第二种办法,定义为指针结构,内部成员可以通过指针指向大数组的任何一个位置。
因此,定义数据结构要看语义是什么……
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册
本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /3 下一条

快速回复 返回顶部 返回列表