"这篇文档介绍了C语言中的结构体,包括如何定义、引用和初始化结构体变量。结构体是一种构造数据类型,允许将不同类型的数据组合在一起形成一个整体。文档还提到了链表、共用体和枚举类型作为相关知识点,并通过实例详细阐述了结构体的定义和使用规则。"
在C语言中,结构体(structure)是一种非常重要的数据类型,它允许我们将不同类型的数据组合成一个单一的实体,以便更好地表示和操作具有关联性的数据。结构体的定义通常包含两步:首先定义结构体类型,然后定义结构体变量。
10.1.1 结构体类型的定义:
结构体类型定义使用`struct`关键字,后面跟着结构体类型名,接着是一系列由分号隔开的成员定义。例如:
```c
struct date {
int year;
int month;
int day;
};
```
在这个例子中,`struct date`是结构体类型名,它包含三个整型成员:`year`、`month`和`day`,分别代表年、月和日。
10.1.2 结构体变量的定义:
结构体变量可以有两种定义方式:
- 先定义结构体类型,再定义变量,如:
```c
struct date date1, date2;
```
这里,`date1`和`date2`都是`struct date`类型的变量。
- 定义结构体类型的同时定义变量,如:
```c
struct student {
int num;
char name[20];
char sex;
struct date birthday;
float score;
} stu1, stu2;
```
在这个示例中,`stu1`和`stu2`是`struct student`类型的变量,`struct student`包含一个`struct date`类型的成员`birthday`,以及其他成员如整型`num`,字符数组`name`,字符`sex`和浮点型`score`。
结构体变量的引用:
结构体变量的成员可以通过`.`运算符来访问,例如:
```c
date1.year = 2022; // 设置date1的年份
stu1.score = 90.5; // 设置stu1的成绩
```
10.1.2.1 初始化结构体变量:
结构体变量可以在定义时进行初始化,如:
```c
struct date today = {2023, 3, 15};
struct student s1 = {1001, "张三", 'M', {2023, 3, 15}, 88.0};
```
这里的`today`和`s1`都被初始化为特定的值。
结构体类型的命名规则和其他标识符相同,且在同一作用域内必须唯一。同时,成员名称不能在同一个结构体中重复,但可以与其他变量、函数或不同结构体的成员名称相同。结构体类型的作用域遵循C语言中普通变量的作用域规则。
结构体类型和变量的使用使得在处理如学生信息这样的复杂数据时更为方便,可以将学号、姓名、性别、出生日期和分数等不同类型的数据显示为一个完整的实体,便于管理和操作。此外,结构体还可以用于创建链表、树等更复杂的抽象数据类型,是C语言中实现数据结构和算法的重要工具。