gpt4 book ai didi

c - C 中的结构和 union ,确定大小和访问成员

转载 作者:行者123 更新时间:2023-12-04 11:35:01 25 4
gpt4 key购买 nike

全部,

这是一个关于 union 的例子,我觉得很困惑。

struct s1
{
int a;
char b;
union
{
struct
{
char *c;
long d;
}
long e;
}var;
};

考虑到char是1个字节,int是2个字节,long是4个字节。这里整个结构的大小是多少? union 大小会是 {size of char*}+ {size of double} 吗?由于 union 中包含的结构,我感到很困惑。

此外,我如何访问结构中的变量 dvar.d ?

最佳答案

由于填充,大小是实现定义的。 union 至少是最大成员的大小,而结构至少是成员大小的总和。内部结构将至少 sizeof(char *) 到 sizeof(long),因此 union 至少有那么大。外部结构至少为 sizeof(int) + 1 + sizeof(char *) + sizeof(long)。所有的结构和 union 都可以有填充。

您正在使用标准的扩展,unnamed fields .在 ISO C 中,将无法访问内部结构。但是在 GCC(我相信 MSVC)中,你可以做 var.d

此外,您还缺少内部结构后的分号。

关于c - C 中的结构和 union ,确定大小和访问成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3380118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com