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

时间:2018-07-10 13:30:56

标签: c pointers structure

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

给出结构灵活的数组

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

有人告诉我不要使用作业进行复制

enter image description here

我不确定为什么此操作仅复制结构的非柔性成员。

有人可以向我解释这种情况的根本原因吗?

1 个答案:

答案 0 :(得分:1)

结构的尺寸不计入FAM。编译器无法知道FAM有多大。因此,任何副本都将忽略FAM。由于很少有所需的行为,因此请勿在具有FAM的结构上使用结构复制。