关于结构体的大小

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-31 06:23   261   0

如何计算结构体的大小呢?

常见的类型大小:比如对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4 ,size of(short)=2, sizeof(float)=4;sizeof(double)=8

偏移量。偏移量指的是结构体变量中成员的地址和结构体变量地址的差。结构体大小等于最后一个成员的偏移量加上最后一个成员的大小.

但要注意两个原则:

一、结构体变量中成员的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍)

二、结构体大小必须是所有成员大小的整数倍。

三, 如果结构体中的成员又是另外一种结构体类型时,只需把其展开即可。但有一点需要注意,展开后的结构体的第一个成员的偏移量应当是被展开的结构体中最大的成员的整数倍.

下面举几个例子来说明:

1.

struct stu1
{
int i;
char c;
int j;
};

sizeof (stu1)=12;

2.

struct stu2
{
int k;
short t;
};

sizeof(stu2)=8;

3.

struct stu3
{
char c1;
int i;
char c2;
}

sizeof(stu3) =12

struct stu4
{
char c1;
char c2;
int i;
}

sizeof(stu4)=8;

struct stu5
{
short i;
struct
{
char c;
int j;
} ss;
int k;
}

sizeof(stu5)=16;

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP