为什么对于具有灵活数组成员的结构,我们不应该使用结构赋值进行复制
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 的结构上使用结构复制。
我目前正在学习c 结构,尤其是具有灵活数组成员的结构。
给定一个结构灵活的数组
struct flex
{
size_t count;
double average;
double scores[]; // flexible array member
};
我被告知不要使用赋值进行复制
我不确定为什么这个操作只复制结构的非灵活成员。
有人可以向我解释一下为什么会这样吗?
结构的大小不计入FAM。编译器无法知道 FAM 有多大。因此,任何副本都会忽略 FAM。由于这很少是期望的行为,因此不要在具有 FAM 的结构上使用结构复制。