C语言基础学习记录-共用体和枚举

1.共用体(union)

● 共用体union是一个能在同一个存储空间存储不同类型数据的类型

● 共用体所占的内存长度等于其最长成员的长度。

● 同一内存段可以用来存放几种不同类型的成员,但每一瞬时只有一种起作用

● 共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员的值会被覆盖

● 共用体变量的地址和它的各成员的地址都是同一地址

共用体的主要用途有:

1 节省内存空间:当多个成员变量不会同时使用,但需要共享同一块内存空间时,可以使用共用体来节省内存。

2 数据类型转换:共用体可以用于不同类型之间的转换,通过存储一个成员变量,然后通过另一个成员变量来读取转换后的值。

共用体的主要特点:

1 共用体的大小取决于最大的成员的大小。

2 共用体的成员 共享同一块内存空间,只能同时存储其中一个成员的值。

3 对共用体的任何成员的修改都会影响到其他成员。

4 共用体的成员可以具有不同的数据类型,但它们在内存中的起始位置是相同的。

1.2共用体和结构体的区别(面试题) 

 首先定义结构体类型的关键字是struct 而定义共用体类型的关键字是union

●存储方式:

○结构体:结构体中的每个成员都占据独立的内存空间,成员之间按照定义的顺序依次存储

○共用体:共用体中的所有成员共享同一块内存空间,不同成员可以存储在同一个地址上

●内存占用:

○结构体:结构体的内存占用是成员变量占用空间之和,每个成员变量都有自己的内存地址

○共用体:共用体的内存占用是最大成员变量所占用的空间大小,不同成员变量共享同一块内存地址

 2.枚举(enum)

(1)枚举是C语言中的一种构造数据类型,它可以让数据更简洁,更易读,对于只有几个有限的特定数据,可以使用枚举.

(2)枚举对应英文(enumeration,简写enum)

(3)枚举是一组常量的集合,包含一组有限的特定的数据

(4)枚举语法定义格式为:

enum 名称{

        值 1;

        值2;

        .....

};                   枚举主要是用来定一组常量的。

(5)枚举成员的类型

枚举的成员默认情况下都是整数类型,通常是int类型。这意味着每个枚举成员都会被赋予一个整数值,并且这些整数值从0开始递增。如果没有显式地指定枚举成员的值,那么第一个成员的值为0,第二个成员的值为1,依此类推。同时,可以显式地为枚举成员指定一个整数值,这个值可以是正整数、负整数或零。

 2.2枚举的应用

1.表示状态和标志位

枚举可以用来表示状态和标志位。例如,使用枚举来表示开关的状态,如打开(ON)和关闭(OFF);或者表示系统的状态,如就绪(READY)、等待(WAITING)等;表示选项和模式,可以定义不同的操作模式,如读取模式、写入模式和编辑模式。

2.表示星期和月份

枚举常用于表示星期和月份,以提高日期和时间处理的可读性。

3.状态机和控制流

枚举常用于状态机的实现,以便在程序中管理不同的状态。这对于处理复杂的控制流非常有用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值