为什么对于具有灵活数组成员的结构,我们不应该使用结构赋值进行复制

why for structure with flexible array member, we shouldn't use structure assignment for copying

我目前正在学习c 结构,尤其是具有灵活数组成员的结构。

给定一个结构灵活的数组

struct flex
{
    size_t count;
    double average;
    double scores[]; // flexible array member
};

我被告知不要使用赋值进行复制

我不确定为什么这个操作只复制结构的非灵活成员。

有人可以向我解释一下为什么会这样吗?

结构的大小不计入FAM。编译器无法知道 FAM 有多大。因此,任何副本都会忽略 FAM。由于这很少是期望的行为,因此不要在具有 FAM 的结构上使用结构复制。