6.7 共用体以及枚举类型
结构体:结构体用于组合不同类型的数据,每个字段占用独立的内存空间。
共用体:共用体也组合不同类型的数据,但所有字段共享同一块内存。
因此,结构体适合表示具有多个属性的对象,而共用体适合表示可以具有不同值的数据。
-------结构体struct关键字-----------------------------------共用体使用union关键字---------
共用体占用的内存大小:由内部最大成员变量类型大小决定。
union Data{
char a;
short b;
int c;
};
解析:由于a、b、c共用一块内存空间,赋值的时候,最后一次赋值wb.c=100,同时赋值给了a和b,最后三者相加就是300;
成员a bc共享同一块空间,但是每个成员 能操作的空间的范围 是由成员自身类型长度决定。
union Data{
char a;
short b;
int c;
};
Data ob;
ob.a = 0x01020304;
ob.b = 0x0102;
ob.c = 0x01;
cout<<ob.a+ob.b+ob.c<<endl; /等于 0x01020203
a是char类型一个字节、b是short类型两个字节,int c是4个字节。(32和64位这三者都一样)
(图片中地址存在错误,这个点只需要知道能操作的空间的范围 是由成员自身类型长度决定)
6.8枚举类型enum
enum Weekday {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
};
在上述枚举类型中,Monday被赋值为0,Tuesday被赋值为1,依此类推。可以使用这些枚举常量来代替对应的整数值,使代码更加可读和易于理解。
2.修改enum枚举类型的值