是否有可能创建一个在编译时不知道大小的结构?

zzt*_*ops 3 c memory data-structures

正如问题所述,我希望在C中创建一个结构,我在编译时不知道它的总大小.

例如,我想创建一个包含计数值的结构和一个包含count元素的数组.我知道这可以实现为:

typedef struct myStruct{
    int count;
    int *myArray;
} myStruct;
Run Code Online (Sandbox Code Playgroud)

但是,我希望这个结构占用一个固体内存块,以便我可以memcpy()在以后使用它.像这样:

typedef struct myStruct{
    int count;
    int myArray[count];
} myStruct;
Run Code Online (Sandbox Code Playgroud)

Car*_*rum 5

听起来你正在寻找灵活的阵列成员:

typedef struct myStruct
{
    int count;
    int myArray[];
} myStruct;
Run Code Online (Sandbox Code Playgroud)

然后,当您稍后分配它时:

myStruct *x = malloc(sizeof(myStruct) + n * sizeof(int));
x->count = n;
Run Code Online (Sandbox Code Playgroud)