Bootstrap

计算结构体大小(32位系统)

  1. 直接算(32位系统下)

32位操作系统字节大小

char :1个字节(固定)

short : 2个字节(固定)

int: 4个字节(固定)

unsigned int : 4个字节(固定)

float: 4个字节(固定)

double: 8个字节(固定)

long: 4个字节

计算规则(32位)

1) 结构体变量的首地址能够被4字节的大小所整除。

2) 结构体每个成员相对结构体首地址的偏移量都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节。

3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节。

例如:

struct student
{
    char a;
    int b;
}
8字节

以字节大小存放,空间不足,再开辟4字节。

struct student
{
    char a;
    short b;
    int c;
}
8字节

struct student
{
    char a;
    char b;
    int c;
    short d;    
}
12字节

  1. 用sizeof计算。

sizeof(stu1)

#include <stdio.h>
struct student
{
    char a;
    short b;
    int c;
};
int main(int argc, char const *argv[])
{
    //创建一个结构体
    struct student stu1;

    printf("%d\n",sizeof(stu1));

    return 0;
}
;