数据类型:
- 已学--整数、实数、字符、字符串、数组、指针、结构
- 待学--向量(vector)类型:优于数组
- 非主流的类型--联合(union)、枚举(enum)
一、联合
- 联合类似于结构,可以容纳多种不同类型的值。
- 区别:联合每次只能存储这些值中的某一个。
- 例如:我们要定义一个变量来存放某种密码,我们可以选择是你女朋友的生日、身份证最后4位数字或者你养的宠物的名字等等。使用联合类型是一个不错的选择。
1.联合的基本语法格式
union mima //使用union关键字 {unsigned long birthday;//使用生日作为密码 unsigned short ssn;// 使用身份证后四位作为密码 char *pet;//使用宠物名字作为密码 }; //一定要加分号;
2.创建union类型的变量
mima pwd; //创建一个mima联合类型的变量pwd
3.对成员进行赋值
//对成员进行赋值pwd.birthday=200000616;//将 200000616 存入 联合的birthday成员里 pwd.ssn=0226;//将 0226 存入 联合的ssn成员里 , 并丢弃(覆盖) birthday成员里的值 pwd.pet="Lili";//将 Lili 存入 联合的pet成员里 ,并丢弃(覆盖) ssn成员里的值
#include <iostream>int main()
{union mima //使用union关键字 {unsigned long birthday;//使用生日作为密码 unsigned short ssn;// 使用身份证后四位作为密码 char *pet;//使用宠物名字作为密码 }; //一定要加分号; mima pwd; //创建一个mima联合类型的变量pwd //对成员进行赋值pwd.birthday=200000616;//将 200000616 存入 联合的birthday成员里 std::cout<<pwd.birthday<<"\n"; //200000616pwd.pet="xaoibai";//将 0226 存入 联合的ssn成员里 , 并丢弃(覆盖) birthday成员里的值 std::cout<<pwd.pet<<"\n"; //xaoibaistd::cout<<pwd.birthday<<"\n"; //4710402:xaoibai这个字符串的第一个元素的地址 (字符串的首地址) return 0;}
二、枚举
1.枚举类型的基本语法格式
//定义枚举类型
enum weekdays{ Monday, Tuesday,Wednesday, Thursday, Friday};//注意:这里不需要使用引号,因为枚举值不是字符串
2.创建枚举enum类型的变量
//创建枚举类型weekdays的变量 weekdays today;
3.对成员进行赋值
//对枚举类型的变量today赋值 today=Monday; //值只能w为定义好的枚举类型std::cout<<today<<"\n"; //0 编辑器会按照各个枚举值在定义时出现的先后顺序把他们与0~n-1的整数关联起来(n是枚举值的总总个数)today=Tuesday;std::cout<<today<<"\n"; //1
4.使用枚举类型的连个好处:
- 它们对变量的可取值加以限制
- 它们可以用作switch条件的case标号。(因为字符串是不能作为标号用的)
#include<iostream>int main()
{//定义枚举类型 enum weekdays{ Monday, Tuesday,Wednesday, Thursday, Friday};//注意:这里不需要使用引号,因为枚举值不是字符串 //创建枚举类型weekdays的变量 weekdays today;//对枚举类型的变量today赋值 today=Monday; //值只能w为定义好的枚举类型
// std::cout<<today<<"\n"; //0 编辑器会按照各个枚举值在定义时出现的先后顺序把他们与0~n-1的整数关联起来(n是枚举值的总总个数)today=Tuesday;
// std::cout<<today<<"\n"; //1switch(today){case Tuesday:std::cout<<"今天不是星期一";} }
三、类型别名
- Typedef 保留字,使用它可以为一个类型定义创建一个别名。
- 例如,我们不喜欢使用 int* 来创建指针,可以像下边这样定义一个类型别名:
typedef int* intPointer;
(这样,intPointer 就等于 int*)
在此之后,我们就可以像下面这样来定义整型指针了:
intPointer myPointer;
未完待续。。。