联合体中的所有成员共用一块内存区域,这个区域的长度取决于占用空间最长的成员
看代码效果,比较直观
/*
* arr 和 addr共用一块空间,空间长度为32bit
* 如果arr类型是uint16_t,那么此空间长度就是16*4=64(bit)
*/
struct addr {
union {
uint32_t addr;
uint8_t arr[4];
};
};
/**
* union中的struct和addr共用一块空间,struct用__packed对齐修饰,长度为8bit
* struct中成员a,b,..每个占用1bit,8个打包成一个就是8bit(1byte)长度
*/
struct flash {
union {
struct