- 1、本文档共85页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CH8(c语言)
八、结构体、联合与枚举 8.1 概述 8.2 结构体类型定义 8.3 结构体变量 8.4 结构体数组 8.5 指向结构体类型数据的指针 8.6 结构体与函数 8.7 单链表 8.8 联合与枚举类型 8.9 用typedef定义类型 8.1 概 述 ? 在一些复杂的数据结构中,有时需要将不同类 型的数据集合成一个有机的整体。 如:一个学生的情况纪录单可能包括学号、姓 名、性别、年龄、成绩、家庭地址等不同类型 的数据项。 对于这样的整体,C语言允许用户根据需要自行 构造出一种被称为“结构体” (structure)的数 据类型 ? 一个结构体类型的数据可以由若干个称为成员 (或域)的成分组成。不同的结构体类型其成 员不同。对于一个具体的结构体而言,其成员 的数量是固定的,这一点与数组相同,但该结 构体中各成员的数据类型可以不同,这是结构 体与数组的重要区别。 8.2 结构体类型的定义 ? 结构体类型定义的一般形式: struct 结构体名 { 结构体成员表列 }; 其中: struct是定义结构体类型的关键字; 结构体名是定义的结构体类型名,其命名规则 同变量名; 结构体成员表列也称域表,每个成员也称结构体中的一个域。每个成员说明形式为: 数据类型 结构体成员名; 例如:struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; ? 定义了一个结构类型,只是定义了类型,并未 定义变量,因而不分配内存单元。 ? 结构体成员可以是整型、实型、字符型、数组、 指针等基本类型或构造类型,还可是定义过的结 构类型。例如: struct date { int month; int day; int year; }; 8.3 结构体变量8.3.1 结构体变量的定义 ? 先定义结构体类型再定义该类型的变量或指针 如:struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; struct student stu1, stu2, *p; ? 定义结构体类型的同时定义该类型的变量或指针 如:struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; } stu1, stu2, *p; 其中结构体名student可省略,但程序的其他地方 就不能用来定义这种类型的变量了。 ? 可用sizeof来计算一个结构体类型数据的长度 如:sizeof(struct student) 或 sizeof(stu1) ? 结构体指针可指向该种结构体类型的任何变量。 如:struct student stu1, *p; p=stu1; 把 stu1 所占有的一组内存单元的首地址赋给指针 变量p,即p指向结构体变量stu1。 ? 指向结构体变量的指针,不能用来指向该变量的 成员。以下赋值语句错误: struct student stu1, *p; p=stu1.num; 8.3.2 结构体变量的引用
文档评论(0)