C语言结构体与共用体详解

需积分: 32 1 下载量 140 浏览量 更新于2024-07-28 收藏 1.52MB PPT 举报
"谭浩强版的C语言教程讲解了结构体和共用体的概念,提供了详细的教学内容。结构体允许我们将不同类型的变量组合成一个新的数据类型,方便处理相关联的数据。共用体则是一种特殊的结构,其中所有成员共享同一块内存空间。此外,教程还涵盖了结构体数组、结构体指针、链表处理、枚举类型以及用typedef定义自定义类型等主题。" 在C语言中,结构体是编程中非常重要的一个概念,它允许我们定义包含多种不同类型数据的复合类型。例如,在学籍管理问题中,每个学生的信息包括学号、姓名、性别、年龄和分数,这些信息可以被定义为一个结构体类型。结构体定义的基本语法是使用`struct`关键字,后跟结构体名称,接着是一个花括号 `{}` 包含各个成员,每个成员由其数据类型和名称组成。例如: ```c struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; ``` 在这个例子中,`struct student` 是定义的一个新类型,`num` 是整型,`name` 是字符数组,`sex` 是单个字符,`age` 是整型,`score` 是浮点型,`addr` 是字符数组,用来存储地址。 结构体变量的定义则需要在结构体类型声明之后进行,这会为每个结构体成员分配内存空间。例如: ```c struct student s1, s2; // 定义两个 struct student 类型的变量 s1 和 s2 ``` 结构体数组允许我们一次定义多个结构体变量,方便处理一组相似的数据。例如,对于多个学生的学籍信息,可以定义一个结构体数组: ```c struct student students[10]; // 定义一个包含10个 struct student 的数组 ``` 结构体指针在处理复杂数据结构时非常有用,比如链表。通过指向结构体变量的指针,我们可以操作结构体中的成员,而无需知道变量在内存中的确切位置。例如: ```c struct student *ptr = &s1; // ptr 是指向 s1 的指针 ptr->num = 1234; // 修改学号 ``` 共用体(union)则是另一种特殊的数据类型,它与结构体类似,但所有成员共享相同的内存空间。这意味着在任何时刻,共用体只能保存其中一个成员的值。共用体的定义与结构体类似,但使用 `union` 关键字。 枚举(enum)是C语言中定义符号常量的一种方式,它提供了一种为整型常量命名的方法。例如,定义一个表示性别的枚举: ```c enum Gender {Male, Female}; // Male 和 Female 分别代表整数值 0 和 1 ``` `typedef` 关键字则用于创建新的类型别名,使得代码更具可读性和可维护性。例如,我们可以用 `typedef` 创建一个简化的 `student` 类型: ```c typedef struct { int num; char name[20]; // ... } Student; // 现在可以使用 Student 替代 struct student ``` 谭浩强版的C语言教程对结构体、共用体以及其他相关主题进行了详尽的阐述,为理解和使用这些特性提供了坚实的基础。