复制
收藏
提问
简洁
struct s { int a; char b; float f; }; 则语句printf("%d",sizeof(structs))的输出结果是
2个月前
全网
文档
学术
百科
知识库
回答简洁模式
深入研究一些
根据C语言的内存对齐规则,结构体的每个成员都会根据其数据类型的大小进行对齐,结构体的总大小会是其最大成员大小的整数倍。对于给定的结构体struct s
,它包含一个int
类型成员a
,一个char
类型成员b
,以及一个float
类型成员f
。
int
类型通常占用4个字节。char
类型占用1个字节。float
类型通常也占用4个字节。
由于int
和float
都是4个字节,结构体s
的对齐规则会使得char
类型成员b
后面有3个字节的填充,以确保float
类型成员f
在4字节边界上开始。因此,结构体s
的总大小将是4(int a)+ 1(char b)+ 3(填充)+ 4(float f)= 12
个字节。
你觉得结果怎么样?