结构体问题

hexuhui 2004-09-10 08:53:17
struct Inf
{
char name[10];
int age;
int sd;
char xc;
}as;

为何sizeof(as)是24?
...全文
155 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
robertnet 2004-09-11
  • 打赏
  • 举报
回复
char name[10]; 补2 10 + 2
int age; 4
int sd; 4
char xc; 补3 1 + 3
4位为一个单位,不够就自动补上,以提高运算速度。 总计10 + 2 + 4 + 4 + 1 + 3 = 24.
blue999star 2004-09-11
  • 打赏
  • 举报
回复
进来冒个泡泡,基础问题,昨天刚看到解释的~~~~~
sharkhuang 2004-09-11
  • 打赏
  • 举报
回复
默认4字节对齐.
lfxzm 2004-09-11
  • 打赏
  • 举报
回复
#pragam pack(1)
Tycool 2004-09-11
  • 打赏
  • 举报
回复
经常问的问题,呵呵呵
coyprightbao 2004-09-11
  • 打赏
  • 举报
回复
up!
snow810211 2004-09-10
  • 打赏
  • 举报
回复
学习
xiaochuaner 2004-09-10
  • 打赏
  • 举报
回复
up
nicewinds 2004-09-10
  • 打赏
  • 举报
回复
这是一个4对齐的问题

char name[10]; 本应该是10个字节,但由于4对齐,它占12个字节
int age; 本来就是4个,满足4对齐
int sd; 同上
char xc; 本来是1个字节,4对齐变成4个字节

所以是 12+4+4+4=24个字节
kobefly 2004-09-10
  • 打赏
  • 举报
回复
呵呵,padding啊,多看书,多思考
这样的问题
论坛上很多的
共同进步
积木 2004-09-10
  • 打赏
  • 举报
回复
嘿嘿,顶一个
  • 打赏
  • 举报
回复
如果将内存对齐调整至1,占用19Bytes
  • 打赏
  • 举报
回复
内存对齐的问题,4Bytes对齐,其中
char name[10];====> 占用12Bytes
int age;======>占用4Bytes
int sd;======>占用4Bytes
char XC;=====>占用4Bytes
共24Bytes

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧