C++(笔记)联合、枚举

一、联合(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的标号用)(小技巧)
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值