【发布时间】:2016-02-12 23:11:40
【问题描述】:
是否可以在一个结构中包含两个大小灵活的数组?
我知道我可以做如下的事情
struct A {
int countB;
struct B[0];
}
但我的问题是我们可以做如下的事情吗?
struct A {
int countB;
struct B[0];
int countC;
struct C[0];
}
如果是,我们如何获得 countC 的偏移量?
如果上面的方法很难实现,还有其他容易解决的吗?
【问题讨论】:
-
你通常会在这里使用动态分配,除非有什么理由不这样做。
-
不可能,
countC的偏移量在编译时是未知的。无论如何,零大小数组都是 GCC 扩展,并且在 C99 中已被实际的灵活大小数组所取代,其语法略有不同。 -
最简单的解决方案是对数组使用数组指针,独立于
struct分配。
标签: c arrays data-structures struct