首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有动态结构大小的C语言数组

具有动态结构大小的C语言数组
EN

Stack Overflow用户
提问于 2021-09-22 06:24:07
回答 1查看 86关注 0票数 1

我已经搜索了这么多,但还没有找到c的任何好的解决方案。我想初始化一个具有动态大小的数组。到目前为止,我看到的解决方案是一个链表,但它似乎不符合我的要求。

到目前为止,我测试过的代码如下

代码语言:javascript
复制
typedef struct 
{
    const unsigned char widgetCount;
    unsigned char index;
    lv_obj_t * radiobtnVIEW[widgetCount];
}AssetVIEW;

然后初始化widgetCount

代码语言:javascript
复制
AssetVIEW View={4};

我得到的错误是

代码语言:javascript
复制
error: 'widgetCount' undeclared here (not in a function)

这位新手非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-22 10:37:05

在C中,当结构被声明时,你不能引用结构中的其他字段。这就是错误消息所指的内容。如前所述,您可以使用指针或灵活的数组成员(fam):

代码语言:javascript
复制
lv_obj_t **radiobtnVIEW;
代码语言:javascript
复制
lv_obj_t *radiobtnVIEW[];

对于fam,您可以为所述字段动态分配内存:

代码语言:javascript
复制
size_t n = 4;
AssetVIEW *View = malloc(sizeof(*View) + n * sizeof(*View->radiobtnVIEW));
...
free(View);

请注意,widgetCount上的const限定符没有意义,因为您无法对其进行初始化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69279173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档