#include <iostream>

using namespace std;

struct A1
{
int a;
static int b;
}; struct A2
{
int a;
char c;
}; struct A3
{
float a;
char c;
}; struct A4
{
float a;
int b;
char c;
}; struct A5
{
double d;
float a;
int b;
char c;
}; void main()
{
cout<<sizeof(A1)<<endl;
cout<<sizeof(A2)<<endl;
cout<<sizeof(A3)<<endl;
cout<<sizeof(A4)<<endl;
cout<<sizeof(A5)<<endl;
}
sizeof数据对齐问题-LMLPHP

分析如下:

A1:sizeof只计算栈中分配的大小,而b是静态变量,位于全局数据区,所以不占用栈的空间,所以A1的大小只是a占用的空间,即4;

A2:数据对齐,int大小为4;char大小为1,扩展为4,所以A2为8;

A3:数据对齐:float大小为4;char大小为1,扩展为4,所以A3为8;

A4:数据对齐:float大小为4;int大小为4;char大小为1,扩展为4,所以A3为12;

A5:数据对齐:double大小为8;float大小为4,int大小为4,float和int共占8;char大小为1,考虑对齐,扩展为8;所以A4为24;

转载自:http://blog.csdn.net/tangbo1987/article/details/6766918
05-11 18:18