c - C中结构中的多个灵活数组?

标签 c arrays struct

我在 c 中的 s 结构中有多个灵活的数组:

typedef struct
{
   int a;
   float b;
} Name;

typedef struct
{  
   int c;
   int d;
   int e;
} NIM;

typedef struct 
{
   int age;
   int time;
   Name name[1];
   NIM  nim[1];
} EthgenSig;

如果我们需要这样分配内存:

malloc(sizeof(EthgenSig) + sizeof(Name) * 10);

如何分配内存,如果我们先操作name数组,然后再操作nim数组,那么nim[1] 会覆盖name数组,那怎么解决呢?

最佳答案

由于您指出的确切原因,您不能拥有超过一个灵活数组成员。

至多,如果你需要你的数据都保存在同一个内存块中,你可以制作namenim指针并设置它们指向正确的位置分配后的位置(确保不破坏任何对齐约束),但最简单(也是最明智)的事情是分别为 namenim 分配数组。

关于c - C中结构中的多个灵活数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17552312/

相关文章:

c - 通过 char* 指针将结构传递给 main

C编程。使用 fopen fclose 进行文本文件操作

ios - 从字符串中获取单词列表

javascript - 将二维数组转换为一维数组,交替使用它们的值

swift - 访问结构中的结构以返回排序数组

c - 将多行扫描到 C 中的结构数组中

c - 解释器中的函数指针

c - 给字节现有的字节值(作业)

python - numpy 数组列表格式

C++:将结构的类型更改为子类型