一、结构体
C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项,结构用于表示一条记录。
struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下:
struct tag {
member-list
member-list
member-list
...
} variable-list ;
tag是结构体标签
member-list 是标准的变量定义
variable-list是结构变量,定义在结构的末尾,最后一个分号之前,可以指定一个或多个结构变量。
举个例子:
struct Books{
char title[50];
char author[50];
char subject[100];
int book_id;
} book;
@在一般情况下,tag、member-list、variable-list 这 3 部分至少要出现 2 个
@和其它类型变量一样,对结构体变量可以在定义时指定初始值
@为了访问结构的成员,我们使用成员访问运算符(.)。成员访问运算符是结构变量名称和我们要访问的结构成员之间的一个句号。可以使用 struct 关键字来定义结构类型的变量
@可以把结构作为函数参数,传参方式与其他类型的变量或指针类似
@可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似
二、补充:位域
有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有 0 和 1 两种状态,用 1 位二进位即可。为了节省存储空间,并使处理简便,C 语言又提供了一种数据结构,称为"位域"或"位段"。
所谓"位域"是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。
位域的使用和结构成员的使用相同,其一般形式为:
位域变量名.位域名 位域变量名->位域名