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++ - 结构中的 union 初始化

c - 如何找到无符号长整型中的所有质因数?

c - 如何在C中将静态数组的所有元素重置为0

c - 循环打印数组内容时程序挂起

java - 具有不同数据类型的数组,即字符串和整数。 (面向对象)

c++ - 为什么结构的 sizeof 不等于每个成员的 sizeof 之和?

c - 将另一个程序集成到使用 CMake 编译的现有程序中

c - C 中的别名模块方法(Ruby 扩展)

arrays - 随机访问数组的时间复杂度

struct - 将结构传递到CUDA内核