标准C学习day12 结构 联合和枚举

结构体类型的存储区里可以同时存放
多个数字
结构体类型需要先创建出来以后才能
使用
结构体类型存储区里可以包含多个子存储区,
每个子存储区可以用来存放一个数字
结构体的不同子存储区类型可以不同,甚至
子存储区也可以是结构体类型的存储区
结构体声明语句用来创建结构体类型
结构体声明语句里需要使用struct关键字

结构体声明语句里包含多个变量声明语句,
这些变量叫做结构体的成员变量.
每个成员变量负责代表一个子存储区的类型
和名称
成员变量声明语句不会分配内存
C语言里结构体不可以包含函数
结构体声明语句可以放在头文件里

可以把结构体作为类型声明变量,这种
变量叫结构体变量
把结构体作为类型使用的时候需要把struct
关键字和结构体名称一起作为类型名称
使用
结构体变量分配了内存,可以用来存放数字

通常需要使用typedef关键字给结构体类型
起别名

可以把声明结构体的语句和起别名的语句
合并成一条语句
这个时候可以省略结构体本身的名称

声明结构体变量的时候也应该进行初始化
可以象初始化数组一样初始化结构体变量

通常不会把结构体变量作为整体使用,一般
一次只会使用其中的某个子存储区
以下写法可以表示结构体的子存储区
prsn.age
其中prsn是结构体变量名称,age是成员
变量名称

同类型的结构体变量之间可以直接赋值

结构体指针可以指向一个结构体存储区
采用以下写法可以通过结构体指针表示
结构体的子存储区
p_person->age
其中p_person是一个结构体指针,它必须
指向一个结构体存储区
age是一个成员变量的名称

不要在函数之间传递结构体数据而应该传递
结构体存储区
这样会节省时间和空间
不符合生命周期规则的存储区不可以在
函数之间传递

一个基本类型存储区的地址应该是它自身大小
的整数倍(double类型存储区的地址只
需要是4的整数倍)
这个规则叫数据对齐
结构体的子存储区缺省情况下也应该遵守
数据对齐的规则
数据对齐会导致结构体不同子存储区之间
会有空隙

结构体存储区的大小必须是它里面占地
最大基本类型子存储区大小的整数倍
(如果结构体里包含double类型子存储区
则结构体存储区的大小只需要是4的
整数倍)
这个规则叫数据补齐
数据补齐可能造成结构体最后有一些
多余的字节

枚举也可以用来创建新的数据类型
枚举类型存储区就是整数类型存储区,
只不过存放的数字范围有限
枚举类型也需要先声明然后才能使用
声明枚举类型的时候需要使用enum关键字
声明枚举类型的时候需要提供一组名称,
计算机会为每个名称分配一个对应
的整数
这些名称叫做枚举值,可以直接在程序里
当做整数使用
只有枚举值对应的整数才能记录在枚举
类型的存储区里
不同枚举类型存储区里可以存放的数字
范围不同
计算机把从0开始的连续多个非负整数
分配给枚举值
可以在声明枚举类型的时候指定某个
枚举值对应的整数,这个时候后面
的每个枚举值对应的整数都会
改变

联合也可以用来创建新的数据类型
联合也需要先声明然后才能使用
声明联合的时候需要使用union关键字
联合的所有成员变量开始地址一样
联合存储区的大小就是最大成员变量的大小
利用联合可以把一段内存当做多种不同类型
的存储区使用(每个成员变量代表了
一种可能的类型)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值