直接算(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字节
用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;
}