联合体
联合体也称为共用体,是一种数据格式,能够储存不同类型的数据,但同一时间只能储存其中的一种类型数据。
union Data{
int a;
double b;
char c[100];
};
Data data;
定义了一种联合体类型的变量 data,对于多种格式的数据项(但不会同时使用)时,共用体可以节省空间。
Data data;
data.a = 10;
data.b = 1.23;
strcpy(data.c, "hello cat.");
cout << sizeof(data) << endl;
cout << data.a << endl;
cout << data.b << endl;
cout << data.c << endl;
输出:
104
1819043176
1.34452e+161
hello cat.
- 联合体成员变量同时使用,造成了数据 a 和 b 的数值不准确,联合体成员变量必须单独使用。
- 数据大小以最大的 char c[100] 为准,对齐字节为 8。
data.a = 10;
cout << data.a << endl;
data.b = 1.23;
cout << data.b << endl;
strcpy(data.c, "hello cat.");
cout << data.c << endl;
输出:
10
1.23
hello cat.
枚举类型
枚举类型的定义:枚举类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。
定义格式:
enum <类型名> {<枚举常量表>};
格式说明:
- 关键字 enum —— 指明其后的标识符是一个枚举类型的名字。
- 枚举常量表 —— 由枚举常量构成。
枚举常量
或称枚举成员
,是以标识符形式表示的整型量,表示枚举类型的取值。枚举常量表列出枚举类型的所有取值,各枚举常量之间以,
间隔,且必须各不相同。
#include <iostream>
using namespace std;
enum Color_Set{
RED,
GREEN,
BLUE,
WHITE,
PURPLE
};
int main() {
Color_Set c1 = RED, c2 = WHITE;
cout << c1 << endl;
cout << c2 << endl;
return 0;
}
输出:
0
3
**枚举常量代表该枚举类型的变量可能取的值,编译系统为每个枚举常量指定一个整数值,默认状态下,这个整数就是所列举元素的序号,序号从0开始。**
可以在定义枚举类型时为部分或全部枚举常量指定整数值,在指定值之前的枚举常量仍按默认方式取值,而指定值之后的枚举常量按依次加1的原则取值。
enum Color_Set{
RED = 2,
GREEN = 3,
BLUE,
WHITE,
PURPLE
};
输出:
2
5
- 枚举变量的值只能取枚举常量表中所列的值,就是整型数的一个子集。
- 枚举常量只能以标识符形式表示,而不能是整型、字符型等常量。
- 枚举变量占用内存的大小与整型数相同。
- 枚举变量只能参与赋值和关系运算以及输出操作,参与运算时用其本身的整数值。
- 定义枚举类型的主要目的是:增加程序的可读性。