什么是灵活阵列?

rlb*_*usa 3 language-agnostic

什么是灵活阵列?我找不到太多东西.

Jer*_*fin 8

它可以参考几件事.我见过的唯一一个使用精确措辞的地方是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的空间,但主要的一点是你可能有几个,每个都有自己的大小.