重新学struct,边界对齐,声明……与Union的区别

时间:2021-10-12 16:50:16

在内存中,编译器按照成员列表顺序分别为每个结构体变量成员分配内存,当存储过程中需要满足边界对齐的要求时,编译器会在成员之间留下额外的内存空间。

如果想确认结构体占多少存储空间,则使用关键字sizeof。

如果想得知结构体的某个特定成员在结构体的位置,则使用offsetof宏(定义于stddef.h)

还不完全懂,待续…… 

struct SIMPLE
{
int a;
char b;
}; //获得SIMPLE类型结构体所占内存大小
int size_simple = sizeof( struct SIMPLE ); //获得成员b相对于SIMPLE储存地址的偏移量
int offset_b = offsetof( struct SIMPLE, b );

【区别】结构体和联合体的区别

联合体是为了节省内存而设置的,若干个不同数据类型共用一组内存单元,什么时候用到union????
结构体所占用的内存单元是 它里面包含数据类型所占内存单元的总和

联合体所占的内存单元是 占用内存单元最大的数据类型所占用的值