用户自定义数据类型:结构体数组与枚举

需积分: 16 1 下载量 32 浏览量 更新于2024-07-14 收藏 3.42MB PPT 举报
"本资源主要介绍了用户自定义数据类型,特别是结构体的定义与使用,包括结构体变量、结构体数组、结构体指针、链表处理、共用体类型和枚举类型的运用,以及使用typedef声明新类型名的方法。" 在编程中,特别是C语言中,用户可以创建自己的数据类型来满足特定的需求。结构体(struct)就是一种这样的自定义数据类型,它允许我们将不同类型的数据组合在一起,形成一个新的复合数据结构。结构体类型通常用于表示具有多个属性的对象,比如学生、教师或工人。 9.1 定义和使用结构体变量 在C语言中,定义结构体类型的一般形式是: ```c struct 结构体名 { 成员类型 成员名; ... }; ``` 例如,定义一个表示学生的结构体类型: ```c struct Student { int num; // 学号 char name[20]; // 姓名 char sex; // 性别 int age; // 年龄 float score; // 成绩 char addr[30]; // 地址 }; ``` 定义结构体类型后,可以声明结构体变量,例如: ```c struct Student student1; ``` 结构体变量可以通过"."运算符访问其成员,如`student1.num = 1001;`。 9.2 使用结构体数组 结构体也可以用来定义数组,数组中的每个元素都是一个结构体。定义结构体数组有两种方式: 1. 直接定义: ```c struct Student students[3] = { {1001, "张三", 'M', 20, 85.5, "北京市"}, {1002, "李四", 'F', 19, 90.0, "上海市"}, {1003, "王五", 'M', 21, 88.0, "广州市"} }; ``` 2. 先声明类型,再定义数组: ```c typedef struct Student Person; Person leaders[3]; ``` 这里,`Person`是`struct Student`的别名,可以简化代码。 9.3 结构体指针 结构体变量可以被指针指向,这样可以方便地传递和操作结构体数据。例如: ```c struct Student *ptr = &student1; printf("学号:%d\n", ptr->num); ``` 这里的`->`运算符相当于`.`运算符,但用于指针。 9.4 用指针处理链表 结构体指针还可以用于构建链表,通过指针成员链接各个结构体节点。 9.5 共用体类型 共用体(union)是一种特殊的数据类型,其中所有成员共享相同的内存空间,这意味着在任意时刻只能访问其中一个成员。 9.6 使用枚举类型 枚举(enum)用于定义一组命名的整数常量,方便代码阅读和理解。 9.7 用typedef声明新类型名 typedef关键字可以用来为已存在的类型创建新的类型名,使得代码更易读,例如: ```c typedef int INT; INT num; ``` 这将`num`声明为`int`类型的别名。 总结来说,用户自定义数据类型,尤其是结构体,是C语言中非常重要的特性,它使得我们能够创建符合实际需求的复杂数据结构,从而更高效地组织和处理数据。通过学习和熟练掌握这些概念,开发者可以编写更加灵活和可维护的代码。