首先我们来看一个结构体
例题1
struct STUDENT
{
char a;
int b;
}data;
如上结构体占多少个字节呢?
思考:char占一个字节,int占四个字节,所以总共占5个字节吗?
其实不是。这就牵扯到结构体中字节对齐的概念。
(什么叫字节对齐?结构体是一种构造数据类型,里面可以有不同的数据类型的成员,在这些数据成员中,不同的数据类型所占的内存空间是不同的,那么这些成员是怎么存储的呢?其实就是按字节对齐方式存储的,即以结构体成员中占内存最多的数据类型所占的字节数为标准,所有的成员在分配内存时,都要与这个长度对齐)
正如上面这个例子:char占一个字节,int占四个字节,与4字节的长度对齐,也就是说,虽然char是一个字节,但是为了与4字节的长度对齐,所以其后面的3字节都会空着(但空并不是什么都没有就同定义了一个变量没有初始化一样)。
所以data不是占5个字节,而是占8个字节。
又如三个成员对齐:
例题2:
struct STUDENT
{
char a;
char b;
int c;
}data;
cha