4
是否有可能在一个结构中有两个灵活大小的数组?C中的嵌套动态结构?
我知道我可以做类似下面
struct A {
int countB;
struct B[0];
}
但我的问题是,我们可以做一些像下面?
struct A {
int countB;
struct B[0];
int countC;
struct C[0];
}
如果是的话,我们如何得到countC的偏移量?
如果上述问题很难实现,还有没有其他的方法可以解决这种情况?
您通常会在这里使用动态分配,除非有某些原因不适用。 –
这是不可能的,'countC'的偏移无法在编译时知道。零大小的数组无论如何都是GCC扩展,并且在C99中已经被实际的灵活大小的数组所取代,而语法略有不同。 –
最简单的解决方法是为数组使用数组指针,这些指针独立于'struct'分配。 –