15.C基础_共用体、枚举

共用体

1、概述与定义

什么是共用体:

共用体又称联合体,是不同数据类型的数据可以使用共同的存储区域。因此同一时间下,只能访问一个共用体的成员,因为它们的空间同一个地方的。

共用体的定义:

共用体的定义与使用与结构体的定义完全一致,唯一的区别是内存大小分配不同

union 共用体名{
    共用体成员
};

共用体变量的定义:

共用体变量的定义与结构体变量的第一完全一致。

//方法1:正常定义结构体变量
union 共用体名 共用体变量名;

//方法2:定义共用体时,定义共用体变量
union 共用体名{
    共用体成员列表
}变量名1,变量名2; //直接在这里写变量名,变量名之间用,隔开               

2、初始化共用体

一般情况初始化:

共用体中虽然成员有多个,但因为它们的空间一样,所以实际赋值是只需要赋值一个

//1.定义共用体变量时初始化
union 共用体名 共用体变量名 = {一个值};

//2.定义共用体时,定义共用体变量的初始化
struct 共用体名{
    共用体成员列表
}变量名 = {一个值};

初始化共用体中的结构体:

这时的初始化类似结构体变量的部分初始化,指定某一个变量,然后初始化。但同样的,只能初始化一个值。

union 共用体名 共用体变量名 = {
    .成员 = 值
};

3、访问共用体变量

共用体变量的访问方法与结构体变量的访问方法完全一致。

访问共用体变量时,应该遵循赋值谁,就访问谁。尽管共用体成员的空间是一样的,强行访问也不会报错,但是逻辑上会有一些问题。

4、共用体大小

计算原则:

  • 要能够容纳的下最大的数据
  • 要是数据类型大小的整数倍,不是则需要补齐

举例:现在有一个共用体定义如下,计算它的大小。

union uTest{
    double a;
    int b;
    char c;
    char d[9];
}

 在这个共用体中,所需空间最大的是d,空间为9字节。占用空间最大的类型是double,空间为8字节。因为9不能被8整除,所以补齐到16。因此该共用体的大小为16。

枚举

1、定义

枚举类型的定义与结构体一样。成员需要用" , "隔开

enum 枚举名{
    枚举成员列表
};

在定义时,新的枚举的成员名与其他枚举的成员名有重复

2、枚举的赋值与打印值

赋值枚举变量只能赋值枚举中列出的值。

枚举变量的打印值并不是枚举出来的值,而是从0开始的整型(在未进行初始化情况下)

如果枚举定义时,进行了指定值,那么实际值将会从指定值开始。

在赋值时,枚举的成员的赋值可以一样。  

3、枚举大小

枚举的值实际上是一个整型,所以不论枚举成员有多少个,枚举大小都是4字节

  • 25
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值