它可以参考几件事.我见过的唯一一个使用精确措辞的地方是C99.
灵活的数组成员是过去(通常)称为"struct hack"的官方C99名称.基本思想是你定义一个像这样的结构:
struct x {
int a; // whatever members you want here.
size_t size;
int x[]; // no size, last member only
};
Run Code Online (Sandbox Code Playgroud)
这主要(或专门)用于动态分配.如果要分配此类型的对象,可以为所需的任何数组大小分配足够的额外空间:
struct x *a = malloc(sizeof(struct x) + 20 * sizeof(int));
a->size = 20;
Run Code Online (Sandbox Code Playgroud)
该size成员不是绝对必要的,但通常很方便跟踪为项目分配的大小.上面的那个有20个int的空间,但主要的一点是你可能有几个,每个都有自己的大小.