C语言程序设计:结构体与共用体解析

版权申诉
0 下载量 69 浏览量 更新于2024-07-01 收藏 743KB PPT 举报
"C语言程序设计中的结构体与共用体" 在C语言中,结构体(Struct)和共用体(Union)是两种重要的复合数据类型,它们允许我们将多个不同类型的变量组合成一个新的数据类型。这在处理复杂的数据结构时非常有用,比如表示学生信息、图书信息等。 9.1 结构体 结构体是一种构造类型数据,它由若干个不同类型的数据项组成,每个数据项称为结构体的成员。通过结构体,我们可以定义出具有多个字段的对象,如学生信息或图书信息。 结构体的定义通常使用`struct`关键字,结构体名是用户自定义的类型标识,成员则包含在大括号 `{}` 内。例如: ```c struct student { char num[8]; // 学号 char name[30]; // 姓名 char sex; // 性别 int age; // 年龄 char addr[60]; // 住址 int score[6]; // 成绩 }; ``` 9.1.1 结构体与结构体类型的定义 在定义了结构体类型后,我们可以声明结构体变量,如下所示: ```c struct student s1, s2; // 声明两个student类型的变量s1和s2 ``` 结构体变量可以像访问普通变量一样访问其成员,如: ```c s1.age = 20; // 设置s1的年龄为20 strcpy(s1.name, "张三"); // 复制字符串"张三"到s1的姓名字段 ``` 9.2 共用体 共用体(Union)与结构体类似,但不同之处在于,共用体的所有成员共享同一块内存空间。这意味着在任意时刻,只能存储其中一个成员的值,而其他成员的值会被覆盖。共用体的定义如下: ```c union bookinfo { char num[10]; // 图书分类编号 char name[30]; // 书名 char author[30]; // 作者 char publisher[60]; // 出版社 float price; // 价格 int stock; // 库存量 }; ``` 使用共用体时,需要注意的是,由于所有成员共享内存,因此它的大小只取决于占用空间最大的成员。 9.3 枚举类型与类型命名 枚举(Enum)类型允许我们定义一组符号常量,这些常量具有整型值。枚举的定义如下: ```c enum gender {MALE, FEMALE}; // 定义一个性别枚举,MALE默认为0,FEMALE默认为1 ``` 类型命名是C语言中的一种机制,允许我们给已知的数据类型创建别名,如: ```c typedef struct { // 结构体定义 } NewTypeName; ``` 这使得代码更易读,例如,我们可以定义: ```c typedef struct student Student; // 给struct student定义别名Student Student s; // 现在可以使用Student代替struct student ``` 总结来说,结构体、共用体和枚举在C语言中提供了强大的数据组织能力,使我们能够构建复杂的数据结构来处理各种实际问题。在编程时,理解并合理运用这些概念可以极大地提高代码的可读性和效率。在进行考试或项目开发时,熟练掌握这些知识是至关重要的。