C语言结构体与联合体:深入解析与应用
1. 结构体基础
1.1 结构体简介
数据常常以组的形式存在。例如,雇主需要记录每个员工的姓名、年龄和工资。如果这些值能存储在一起,访问它们会更简单。但如果这些值类型不同,就不能用数组存储。在C语言中,可以使用结构体将不同类型的值存储在一起。
C语言提供了两种聚合数据类型:数组和结构体。数组是相同类型元素的集合,通过下标或指针间接引用访问元素;而结构体也是值的集合,这些值称为成员,成员可以是不同类型,类似于Pascal或Modula中的记录。
数组元素大小相同,只能通过下标访问;结构体成员大小可能不同,不能用下标访问,而是通过成员名访问。结构体变量是标量,可以像其他标量一样进行操作,如作为函数参数传递、由函数返回,相同类型的结构体可以相互赋值,还能声明结构体指针、获取结构体变量地址以及声明结构体数组。
1.2 结构体声明
结构体通过列出其包含的成员来声明,包括每个成员的类型和名称,语法如下:
struct tag { member-list } variable-list ;
其中,可选字段不能全部省略,至少要出现两个。
以下是几个例子:
struct {
int a;
char b;
float c;
} x;
这个声明创建了一个名为 x
的变量,包含三个成员:一个整数、一个字符和一个