在C中声明后初始化结构数组的大小?
我做了一些搜索,但没有找到任何东西能回答我关于结构的问题: 在我的程序中,我有两个结构:一个包含数据,另一个包含第一个结构的数组(用于使返回结构数组更容易) 在运行几行代码之前,我不知道上述结构数组的大小。从我发现的情况来看,在声明数组(或任何类型)之后,没有办法定义它的大小,尽管我想知道这是否适用于结构 如果没有,是否有方法在不使用malloc的情况下定义结构中先前声明的数组的大小?将malloc与struct数组一起使用似乎有点复杂,我还不能完全理解它在C中声明后初始化结构数组的大小?,c,C,我做了一些搜索,但没有找到任何东西能回答我关于结构的问题: 在我的程序中,我有两个结构:一个包含数据,另一个包含第一个结构的数组(用于使返回结构数组更容易) 在运行几行代码之前,我不知道上述结构数组的大小。从我发现的情况来看,在声明数组(或任何类型)之后,没有办法定义它的大小,尽管我想知道这是否适用于结构 如果没有,是否有方法在不使用malloc的情况下定义结构中先前声明的数组的大小?将malloc与struct数组一起使用似乎有点复杂,我还不能完全理解它 typedef struct {
typedef struct
{
char **data;
} struct1;
typedef struct
{
struct1 data[];
} struct2;
int main(int argc, char **argv)
{
//Pretend there is code here that finds the size I need
size = 5;
struct2 Info;
Info.data = new struct1[size]; //Clearly this won't work, but does C offer anything comparable?
return 0;
}
如果数据序列的长度仅在运行时确定,则应使用malloc。除非您展示您的声明和一些代码或示例,否则很难提供更多的帮助。这个问题不是很清楚。结构中可以有一个灵活的数组成员,也可以有可变长度的数组。你到底想做什么?
struct2*s2p=malloc(offsetof(struct2,data)+sizeof(struct1)*size))
。现在有一个struct2*
指向一个对象,该对象可以用作包含size
struct1
s的struct2
。@Lance\P:代码段中的语法应该是正确的。一个问题可能是struct2
必须包含多个命名成员(灵活数组成员必须是最后一个成员),因此必须将struct2
更改为{char dummy;struct1 data[];}
。