偏移量:结构体中的偏移量就是结构体成员和结构体变量的地址之差,比如说第一个结构体成员的偏移量就是0,第二个结构成员的偏移量就是第一个结构体成员的大小,假如第一个成员的是int b;那么第二个结构体成员变量的偏移量就是4
计算结构体大小的规则:
1.每一个成员的偏移量(不包括数组和结构体)都必须是该成员的倍数。
2.结构体的大小必须是该结构体字节数最大成员(不包括结构体和数组)的倍数。
结构体的大小是与成员变量的顺序排列有关;
例1:
#include<stdio.h>
struct buf
{
int a;
char b;
float c;
};
int main()
{
struct buf t;
printf("a:%d,b:%d,c:%d,t:%d",sizeof(t.a),sizeof(t.b),sizeof(t.c),sizeof(t));
return 0;
}
结构体中,a为整型,占4个字节,但排在第一个,所以偏移量为0;第二个元素b为字符型,占1个字节,因为排在第二,所以b的偏移量就是a的大小,为4,因为4是1的整数倍&#x