struct
格式
struct 结构名 {
类型 变量名;
类型 变量名;
......
}结构变量;
结构名是结构的标识符
结构 typedef
给结构体起别名
结构数组
结构数组本质是一个数组
结构数组是具有同样结构类型的变量集合
结构体成员的訪问是以数组元素为结构变量
结构数组元素.成员名
结构指针
结构指针是指向结构的一个指针,即结构中第一个成员的首地址
使用结构指针,首先应对结构指针初始化
嵌套结构
嵌套结构是指在一个结构成员中能够包含其他一个结构
位字段
位字段是一种特殊的结构,按位訪问一个字节或字的多个位
位字段比按位运算符更加方便
定义形式
struct 位结构名{
数据类型 变量名:整型常数;
数据类型 变量名:整型常数;
数据类型 变量名:整型常数;
.....
}位结构变量;
数据类型必须是int(unsigned 或signed)
整型常数必须是非负整数,表示二进制位的个数
变量名是可选项,能够不命名,这样规定为了排列须要
位段的最大取值范围不要超出二进制位数定的范围,否则超出部分会丢弃.
tips
一个位段必须存储在同一存储单元(即字)之中,不能跨两个单元.若其单元空间不够,则剩余空间不用,从下一个单元起存放该位段.
能够通过定义长度为0的位段的方式使下一位段从下一存储单元開始.
位段的长度不能大于存储单元的长度.
位段无地址,不能对位段进行取地址运算.
位段能够以%d、%o、%x格式输出.
位段若出如今表达式中,将被系统自己主动转换成整数.
越位
所申明的总位数超过一个unsigned int大小
不同意一个字段跨越两个unsigned int之间的边界
使用未命名的字段宽度填充未命名的洞
使用宽度为0的未命名字段迫使下一个字段与下一个整数对齐