联合体与枚举

联合体:

联合体和结构体一样,都可以由不同类型的成员变量组成,但是分配给联合体的内存空间至少是联合体中最大的成员变量的大小(保证存的下最大的成员变量)。联合体中的各个成员变量共用一个空间,因此,联合体也称共用体。联合体的关键字是union。

联合体的创建:

联合体的创建与结构体的创建类似

#include <stdio.h>

union un {
    char i;
    int m;
};

int main()
{
    union un stem;
    printf("%d", sizeof(stem));
    return 0;
}

结果是4。

联合体的特点:

联合体中不同类型的成员变量共用一个内存空间,因此各个不同类型的成员变量却有相同的地址。那么,改变其中的一个变量,其它变量的值也会随之改变。

值得注意的是,联合体的最大空间是最大成员变量类型(强调的是最大的变量类型)的整数倍。

可以看到结果是8个字节,两个int类型的大小。

联合体与结构体类似,但是在某种特定情况下,使用联合体更节省空间。

枚举:

枚举就是确定变量的可能值,使得变量只能使用自己确定的值,否则会报错。

枚举的关键字是enum。以下是枚举的创建,与结构体、联合体相类似:

enum Day//星期几
{
 Mon,
 Tues,
 Wed,
 Thur,
 Fri,
 Sat,
 Sun
};

enum Day day=Mon;//ture:只能取自己写的值进行赋值操作
enum Day day=1//error:1不是自己取的值

我们可以使用 #define 定义常量,为什么非要使用枚举?

枚举的优点:

1. 增加代码的可读性和可维护性 、

2. 和#define定义的标识符比较枚举有类型检查,更加严谨。

3. 便于调试,预处理阶段会删除 #define 定义的符号

4. 使用方便,⼀次可以定义多个常量

5. 枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值