C语言基础---特殊的变量类型(结构体、枚举、共用体)
1.结构体
C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体,在其他一些高级语言中称为“记录”。
struct Student { int num; char name[20]; char sex; int age; float score; char addr[30]; };
声明一个结构体类型一般形式为:
struct 结构体名
{成员列表};
注意:结构体类型的名字是由一个关键字struct 和结构体名组合而成的(例如struct Student),其中Student就是结构体名,但是这个变量的数据类型是struct Student。
结构体变量的引用由两种方式:①用“.”符号,结构体变量.结构体内的成员变量;②用“->”符号,结构体指针变量名->结构体成员变量。
2.共用体
有时候想用一段内存单元存放不同类型的变量。例如把一个短整型变量,一个字符型变量和一个实型变量放在同一个地址开始的内存单元中。以上三个变量在内存中占得字节数不同,但都是从同一地址开始存放,也就是使用覆盖技术,后一个数据覆盖了前一个数据。这种使几个不同的变量共享同一段内存的结构成为“共用体”类型的结构。
定义公用特类型变量的方式一般如下:
union 共用体名
{
成员表列;
}变量表列;
结构体变量所占得内存长度是各成员占得内存长度之和,而共用体所占得内存长度等于最长的成员长度。
引用共用体变量的方式:只有先定义了共用体变量才能引用它,但应注意,不能引用共用体变量,而只能引用共用体变量中的成员。
共用体类型数据的特点:
(1)同一个内存段可以用来存放不同类型的成员,但在每一瞬时只能存放其中一个成员,而不是同时存放几个;
(2)可以对共用体变量初始化,但初始化表中只能有一个常量;
(3)共用体变量中起作用的成员是最后一次被赋值的成员;
(4)共用体变量的地址和他各成员变量的地址都是同一地址。
3.枚举变量
如果一个变量只有几种可能的值,则可以定义为枚举类型,所谓枚举就是把可能的值一一列举出来,变量的值只限于列举出来的值的范围内。
声明枚举类型用enum开头。例如:
enum weekday{sun,mon,tue,wed,thu,fri,sat};
以上声明了一个枚举类型enum weekday workday,weekend; /*后面两个是枚举变量*/
花括号中的sun,mon,...,sat成为枚举元素或者枚举常量。
说明:(1)c编译对枚举类型的枚举元素按常量处理,故称为枚举常量,不要因为它们是标识符而把它们看作变量,不能对其进行赋值。
(2)每一个枚举元素都代表一个整数,c语言按照定义时的顺序默认它们的值为0,1,2,3,4,5....在上面的定义中。sum的值为0,mon的值为1,如果有赋值语句:workday = Mon;相当于workday = 1。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现