求助结构体数组申请内存的代码

2019-07-20 13:55发布

结构体定义__packed typedef struct
{       
        u16 water;       
        u8 cond;
        u8 stir ;               
        u8 lid;               
        u8 process_down ;       
        u16 process_time;       
        u8  process_power;       
}set;

结构体指针定义  set * run_set[20];

run_set=(set*)gui_memin_malloc(20*sizeof(set));//分配内存

这样会出错,求大神给个能行的方法
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
liuchang
1楼-- · 2019-07-20 18:17
本帖最后由 liuchang 于 2017-6-16 16:20 编辑

当然会出错,这里的run_set[]是个指针数组,run_set是这个数组的首地址,但归根到底仍然是个指针.并且是指针常量.
所以这里的错误有2个:

1>run_set是数组名,数组名不允许修改.

2>指针所占的内存应该是sizeof(set *).一般是4字节.

wanfh22
2楼-- · 2019-07-20 22:58
 精彩回答 2  元偷偷看……
civic7366
3楼-- · 2019-07-21 02:40
 精彩回答 2  元偷偷看……
likunxue
4楼-- · 2019-07-21 06:27
本帖最后由 likunxue 于 2017-6-16 18:04 编辑

  


1先定义一个指针 8位的就行了 并为这个指针申请一段内存与结构体一样大小 如下

u8 *arm = mymalloc(SRAMIN,sizeof(set));   //申请内存   
2:再订义一个结构体指针 并将这个结构体的指针指向前面定义的地个8位指针的首地址


set *const   Set = (set *)arm;//定义一个结构体指针首地址指向你申请如个指针的首地址




使用如下,

Set->water =  100; //成员变量付值










万飞华
5楼-- · 2019-07-21 08:56
 精彩回答 2  元偷偷看……
万飞华
6楼-- · 2019-07-21 09:47
likunxue 发表于 2017-6-16 17:54
1先定义一个指针 8位的就行了 并为这个指针申请一段内存与结构体一样大小 如下

u8 *arm = mymal ...

新手表示没怎么看懂,感觉还是没法解决我要为结构体数组分配内存且能单独访问的效果

一周热门 更多>