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/