联合、枚举和类型别名
1、联合
联合与结构有很多相似之处,联合也可以容纳多种不同类型的值,但是它每次只能存储这些值中的某一个。
union mima
{
unsigned long birthday;
unsigned short ssn;
char* pet;
};
//创建该类型变量
mima mima_1;
// 对联合利的成员赋值
mima_1.birthday = 19981201;
//如果我们再执行下边语句,这个联合将存入"Chaozai"的pet成员,并丢弃birthday成员里的值
mima_1.pet = "Chaozai";
#include <iostream>
using namespace std;
union mima
{
unsigned long birthday;
unsigned short ssn;
char* pet;
};
int main()
{
mima mima_1;
mima_1.birthday = 19981201;
cout << mima_1.birthday << endl;
mima_1.pet = "Chaozai";
cout << mima_1.pet << endl;
cout << mima_1.birthday << endl;
return 0;
}
2、枚举
枚举类型用来创建一个可取值列表:
enum weekdays{Monday, Tuesday, Wednesday, Thursday, Friday};
//创建该类型变量
weekdays today;
//赋值
today = Tuesday;
#include <iostream>
using namespace std;
int main()
{
enum weekdays{Monday, Tuesday, Wednesday, Thursday, Friday};
//创建该类型变量
weekdays today;
//赋值
today = Tuesday;
cout << today << endl;
today = Monday;
cout << today << endl;
return 0;
}
注意:
(1) 这里不需要使用引号,因为枚举值不是字符串
(2) 编译器会按照各个枚举值在定义时出现的先后顺序把它们与0~n-1的整数分别关联起来.
使用枚举类型的好处:
(1)它们对变量的可取值加以限制
(2) 它们可以用做switch条件语句的case标号,而字符串是不能作为标号使用的
3、类型别名
Typedef保留字可以用来为一个类型定义创建一个别名
比如: typedef int* intPointer;
intPointer myPointer;