hyts3366 2022-10-11 17:30 采纳率: 40%
浏览 123
已结题

C语言使用数组初始化指针的问题

定义一个结构体
typedef struct
{
uint32_t id;
uint8_t *data;
}ST_Msg;

由于不同id,对应的data长度不同,所以这里使用了指针。
然后定义结构体数组并初始化
const ST_Msg Msg_Pro[] =
{
{0x12345678,{1,1}},
{0x23456789,{2,2,2}},
};

这里这样写会报错,我目前的解决方法是新定义数组
uint8_t a[] = {1,1};
uint8_t b[] = {2,2,2};
然后把初始化修改为
const ST_Msg Msg_Pro[] =
{
{0x12345678,a},
{0x23456789,b},
};

这样可以正常编译,但是我想要的效果就是把id 和data的初始化的值放在一起,这样更加直观,所以想请问一下有没有什么方法能达到类似
const ST_Msg Msg_Pro[] =
{
{0x12345678,{1,1}},
{0x23456789,{2,2,2}},
};
这样初始化的效果?

  • 写回答

7条回答 默认 最新

  • 快乐鹦鹉 2022-10-11 17:33
    关注
    获得1.95元问题酬金

    应该不行。指针没有分配空间
    你要改成uint8_t data[10];这样子才可以

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月19日
  • 创建了问题 10月11日