#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; }
分析如下:
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