C++(笔记)联合、枚举
来源:互联网 发布:手机帧数显示软件 编辑:程序博客网 时间:2024/06/18 11:01
一、联合(union)
1.定义
联合与结构相似,也可以容纳不同类型的值,但每次只能存一个值,若在容纳另一个值将会把前面的值覆盖调(即:多个变量使用同一个内存空间,但内存空间只有1个,所以要这些变量在不同时间用才行)
2.结构
union mima//这里和结构体类似,就是吧struct改为union
{
unsigned long birthday;
unsigned short ssn;
char *pet;
};
mima mima_1;//创建该联合类型的变量
//对结构成员进行赋值
mima_1.birthday=19980105;
//然后再执行下面语句(这里是验证联合类型只能存一个值,否则会被覆盖)
mima_1.pet=”xxx”//执行这个语句时会把birthday成员的值丢弃
3.举例
#include <iostream>using namespace std;union mima{ unsigned long birthday; unsigned short ssn; char *pet;};int main(){ mima mima_1; mima_1.birthday=19980105; cout<<mima_1.birthday<<"\n"; mima_1.pet="xxx"; cout<<mima_1.pet<<"\n"; cout<<mima_1.birthday<<"\n";//这个的值已经被覆盖,输出的是它在内存中的地址 return 0;}//19980105//xxx//4751362
4.总结
1.为了节省空间时使用联合类型(只提供一个内存)
2.使用不同方式解释数据时不用强制转换时也可以用联合类型
二、枚举(enum)
1.定义
枚举(enum)类型用来创建一个可取值的列表
2.用法(结构)
enum weekdays{Monday,Tuesday,Wednesday,Thursday,Friday};
//下面创建该类型的变量
weekdays today;
//下面方式对它赋值
today Thursday;//注意Monday,Tuesday…这些并不是字符串,而是从0开始的值,变量的赋值只能出现在上面五个元素中
3.举例
#include <iostream>using namespace std;int main(){ enum weekdays{Monday,Tuesday,Wednesday,Thursday,Friday};//这些值不是字符串,默认Monday为0,Tuesday为1...... weekdays today; today=Monday; cout<<today<<"\n"; today=Tuesday; cout<<today<<"\n"; return 0;}//结果是0,1
- 若将Monday赋值为1
#include <iostream>using namespace std;int main(){ enum weekdays{Monday=1,Tuesday,Wednesday,Thursday,Friday}; weekdays today; today=Monday; cout<<today<<"\n"; today=Tuesday; cout<<today<<"\n"; return 0;}//结果是1,2
4.总结
1.它可以对变量的可取值加以限制(比如本来枚举定义为Monday,若后面写成Monday1,是不实现的)
2.它可以用作switch条件语句的case标号(因为字符串不能作为case的标号用)(小技巧)
- C++(笔记)联合、枚举
- 【C语言】枚举,联合
- C语言 联合和枚举
- C语言枚举和联合
- C语言基础教程(四)指针、结构、联合和枚举
- C语言入门(二十一)联合和枚举
- 【笔记-C语言】 联合
- 《你必须知道的495个C语言问题》笔记--结构、联合和枚举
- iOS开发学习笔记 2-8 C语言部分 联合 枚举 结构体
- 标C编程笔记day05 函数声明、文件读写、联合类型、枚举类型
- C语言入门教程 (十九) 联合和枚举
- C语言学习之联合、枚举
- C语言基础知识----联合 && 枚举 && 结构体
- 【C语言总结】结构体、联合、枚举
- 【C语言】联合与枚举类型
- C语言结构体、枚举、联合
- 【c++】联合、枚举和类型别名
- 基础备忘:结构体、联合、枚举笔记
- Win32控制台应用程序、Win32项目、MFC应用程序的区别与联系
- CocoaPods详解之----制作共有库篇
- Codeforces Round #401 (Div. 2)B. Game of Credit Cards(贪心)
- hdu1875畅通工程再续
- 添加当前路径到PATH中
- C++(笔记)联合、枚举
- 与或非、异或、左移右移
- Java并发编程资源汇总
- 计算机概述
- 经典二分算法详解
- Linux 查看进程的线程数
- PAT甲级C语言.1006. 换个格式输出整数
- PAT_1001. 害死人不偿命的(3n+1)猜想 (15)
- 使用OEPE快速开发WebLogic Web Service服务端