共用体
结构体和共用体的异同点
1、结构体和共用体都可以建立新的数据类型。
2、结构体变量的每个数据成员同时被分配了各自独立的存储空间,互相之间没有影响;
3、共用体变量的每一个数据成员的起始地址都相同(存储重叠),所有数据成员占用同一段内存,修改一个数据成员会影响其它所有数据成员。
4、结构体变量占用的内存大小,大于等于所有数据成员占用内存的总和。(字节对齐)
5、共用体变量占用的内存大小,等于最大数据成员占用的内存大小,共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新成员赋值,就会把原来成员的值覆盖掉。
struct st_data
{
int number;
char ch[2];
};
union un_data
{
int number;
char ch[2];
};
int main()
{
struct st_data sd = {
0x61626364,'a','b'};
union un_data ud = {
0x61626364};
printf("ud.number:%x \n",ud.number);//
printf("ud.ch[0] : %c ,ud.ch[1] : %c \n",ud.ch[