gpt4 book ai didi

c - struct 内部的 sizeof struct

转载 作者:行者123 更新时间:2023-12-02 08:19:47 30 4
gpt4 key购买 nike

struct S1
{
char c;
int i;
};

struct S3
{
char c1;
struct S1 s;
double c2;
};

我正在尝试计算sizeof(S3),从我的程序中它是24。我不知道的是struct S1 在S3 中的偏移量,这个偏移量有什么规则吗?我认为“S1 的偏移量必须是其自身大小的 N 倍,即 N * sizeof(S1)”,然而,我发现这不是真的。感谢您的帮助。

最佳答案

C 标准在这方面有意灵活。

它只保证 (i) struct 中第一个元素的地址与 struct 的地址相同,以及 (ii) 数据成员按照它们在 struct 中声明的顺序出现。 (iii) 一个空的 struct 将有一个非零的 sizeof。最后一个意味着指针运算在空结构上有效。

特别是,允许​​在任何结构成员之间和末尾插入填充(任意数量)。

关于c - struct 内部的 sizeof struct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38331002/

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