浅谈结构体大小

来源:互联网 发布:服务器部署java项目 编辑:程序博客网 时间:2024/05/16 14:50

//1、结构体大小等于最后一个成员地址的偏移量加上最后一个成员的大小
//2、结构体变量中的成员的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍)
//3、结构体大小必须是所有成员大小的整数倍
//4、嵌套结构体中展开后的结构体的第一个成员变量的偏移量应该是被展开结构体中最大成员的整数倍

 

 

#include "iostream.h"

struct example1{
 char a; //偏移量 0
 double b;  //偏移量0+1=1,由于1不是8的倍数,所以偏移量应为8
 long l;  //偏移量8+8=16
}; //结构体大小为16+4(最后一个成员大小)=20,
//但是20不是4,8,4的最小公倍数,所以最终还要加4变为24

struct example2{
 char a; //偏移量0
 long l; //偏移量0+1=1,由于1不是4的倍数,所以偏移量应为4
 double b; //偏移量4+4=8
 //结构体大小为8+8(最后一个成员大小)=16
};

void main()
{
 cout<<"char---"<<sizeof(char)<<endl;
 
 cout<<"double---"<<sizeof(double)<<endl;

 cout<<"long---"<<sizeof(long)<<endl<<endl;

 cout<<"The size of example1 is "<<sizeof(example1)<<endl<<endl;

 cout<<"The size of example2 is "<<sizeof(example2)<<endl<<endl;
}

原创粉丝点击