C语言联合体,位段,及枚举类型

共 1508字,需浏览 4分钟

 ·

2021-01-12 18:26

前言

上章节主要针对结构体给大家做一介绍,不清楚的可以回顾上一章节,本章节主要讲解C语言中的联合体,位段,以及枚举类型。

C语言联合体

在C语言中,联合体是不同数据类型的元素的集合。联合体用于以C编程语言创建用户定义的数据类型。作为用于创建用户定义的数据类型的联合体,该联合体也被称为“ C中的用户定义的数据类型”。换句话说,联合体是非同质元素的集合。使用联合体,我们可以定义称为用户定义数据类型的新数据类型,该数据类型包含不同数据类型的多个值。

联合体是一个单一名称下不同类型元素的集合,它充当C中用户定义的数据类型。(联合体也叫做共用体)。

如何创建联合体

要在c中创建联合体,我们使用关键字“ union ”。我们使用以下语法在c编程语言中创建联合。

以下是创建一个名为Student的工会的示例,该联合体用于保存学生记录

要记住的重要点
  • 每个联合必须以分号(;)结束。

  • “union”是一个关键字,必须仅使用小写字母。

如何使用联合体变量

创建和使用联合体变量

在C语言中,有两种创建联合变量的方法。我们可以在定义联合体时创建变量,也可以在使用联合体类型去定义变量。要使用联合体变量访问成员,我们使用点(.)运算符。考虑以下示例代码

在上面的例子程序,结合变量stud2访问联合体的成员时,我们都使用点(.)运算符。

联合体的内存分配

当用c语言使用联合体时,在定义联合体时不会分配内存。当我们创建特定联合体的变量时,将分配内存。分配的内存大小等于该联合的所有成员中单个成员所需的最大内存。所有联合体用最长内存,故不能同时初始化所有成员

特殊结构体之位段

当我们使用c语言使用结构时,结构变量所需的内存就是该结构的所有单个成员所需的内存之和。为了节省内存或限制结构成员的内存,我们使用位域概念。使用位域,我们可以指定要为结构的各个成员分配的内存。要了解位域,让我们考虑以下示例代码...

C语言中的日期结构

在这里,Date结构的变量分配12个字节的内存。在上面的示例结构中,成员day和month都不需要4个字节的内存。因为天数存储1到31的值,需要5位二进制位,而月份只存储1到12的值,需要4位二进制位。因此,为了节省内存,我们使用位段。考虑具有位段的以下结构:

C语言中的日期结构

在这里,Date结构的变量分配8个字节的内存。

故位段把数据存储精确到二进制位,从而达到节省内存的。

枚举类型

在C语言中,枚举用于创建用户定义的数据类型。通过枚举,整数常量被分配了名称,我们在程序中使用这些名称。在编程中使用名称可以使其更易读和易于维护。

枚举是通过将名称分配给整数常量来创建用户定义的数据类型的过程

我们使用关键字enum创建枚举数据类型。枚举的一般语法如下:

枚举{name1,name2,name3,...}

在以上语法中,将常数'0'分配给name1,将积分常数'1'分配给name2,依此类推。

我们还可以如下分配自己的积分常数:

枚举{name1 = 10,name2,name3 = 15,...}

在以上语法中,将积分常数'10'分配给name1,将常数'31'分配给name2,依此类推。如下测试代码:

通常程序中同类型具有特殊含义的常量我们会声明为枚举类型,增加可读性 ,例如颜色,星期数,月份,方向等等。

尾言

作业:使用枚举类型,实现按键交互基本框架

现在多学一样本事,以后就能少说一句求人的话。

浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报