Chinaunix首页 | 论坛 | 博客
  • 博客访问: 87964
  • 博文数量: 38
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 535
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-03 15:11
文章分类

全部博文(38)

文章存档

2011年(1)

2010年(3)

2009年(19)

2008年(15)

我的朋友

分类: C/C++

2008-11-03 09:33:42

union u
{
 double a;
 int b;
};

union
{
 char a[13];
 int b;
};

union u3
{
 char a[13];
 char b;
};

cout<cout<cout<
 
union的大小取决于它所有的成员中,占用空间最大的一个成员的大小。所以对于u来说,大小就是最大的double类型成员a了,所以sizeof(u)=sizeof(double)=8。但是对于u2和u3,最大的空间都是char[13]类型的数组,为什么u3的大小是13,而u2是16呢?关键在于u2中的成员int b。由于int类型成员的存在,使u2的对齐方式变成4,也就是说,u2的大小必须在4的对界上,所以占用的空间变成了16(最接近13的对界)。
阅读(2766) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~