arrays - 结构中具有动态大小的 C 语言数组
问题描述
我已经搜索了很多,但还没有找到任何好的 c 解决方案。我想用动态大小初始化一个数组。到目前为止我看到的解决方案是一个链表,但它似乎不符合我的要求。
到目前为止我测试过的代码如下
typedef struct
{
const unsigned char widgetCount;
unsigned char index;
lv_obj_t * radiobtnVIEW[widgetCount];
}AssetVIEW;
然后初始化widgetCount
AssetVIEW View={4};
我得到的错误是
error: 'widgetCount' undeclared here (not in a function)
这个新手感谢您的帮助。
解决方案
在 C 中,您不能在声明结构时引用结构中的其他字段。这就是错误消息所指的内容。如前所述,您可以使用指针或灵活的数组成员(fam):
lv_obj_t **radiobtnVIEW;
lv_obj_t *radiobtnVIEW[];
对于 fam,您可以为所述字段动态分配内存:
size_t n = 4;
AssetVIEW *View = malloc(sizeof(*View) + n * sizeof(*View->radiobtnVIEW));
...
free(View);
请注意,const
限定符 onwidgetCount
没有意义,因为您无法对其进行初始化。
推荐阅读
- python - 如何使用默认功能键入 zip_with
- django - 是否可以在生产模式下保持 Django 管理面板可访问?(调试=假)
- random - Lua - 从范围(或表)中选择一个随机值,不包括(或另一个)表的值
- sql - 将数据表与查找表连接以修复不良数据
- python - 将粒子对分组为所有组合
- api - 如何使用 WSO2 API Manager 将多个 API 集成到标准 API 中?
- sql - 事务块会导致数据库上的 postgresql 中的错误提交或应用程序崩溃吗?
- javascript - React 和 Redux:控制台不显示错误
- c - 如何在 Windows 10 上打开 Glade 界面设计器?
- abp - 测试 AppService:System.ObjectDisposedException