- 1、本文档共89页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章结构体、共用体和枚举类型
第9章 结构体、共用体和枚举类型 ; 9.1 结 构 体 在实际应用中,一组数据往往具有不同的数据类型。例如在学生登记表中,学号、姓名、性别、年龄、电话号码和家庭地址的数据类型不完全相同。显然不能用数组来存放这一组数据,因为数组中各元素的类型和长度都必须一致。为了解决这个问题,C语言中给出了另一种构造数据类型——结构体。结构体是一种构造类型,它是由若干“成员”组成的。每一个成员可以是一个基本数据类型,或者是另一个构造类型。结构体既然是一种“构造”而成的数据类型,那么在说明和使用之前必须先定义结构体类型。;; 定义结构体类型的一般形式如下: struct 结构体名 { 数据类型1 成员1; 数据类型2 成员2; … 数据类型n 成员n; };; 说明: (1) ?struct是定义结构体类型的关键字,不能省略。 (2) 结构体名遵循标识符的命名规则。 (3) 结构体有若干数据成员,用{}括起来,分别属于各自的数据类型。结构体成员名同样遵循标识符的命名规则。 ; (4) 定义结构体类型,就是定义一种数据类型,与基本数据类型是一样的,只不过结构体类型是一种复杂的数据类型,是基本数据类型的组合。应注意,使用结构体类型时,“struct 结构体名”是作为一个类型名来对待的,它与标准类型(如int、char等)具有相同的地位和作用。 (5) 定义结构体类型后,C系统并不分配存储空间,只有定义了该结构体类型的变量后,系统才为此变量分配存储空间。 例9-1 定义一个学生信息的结构体类型。;struct student{ int num; char name[19]; char sex; int age; char tel[20]; char addr[40];};; 说明: (1) “struct student”是结构体类型名。struct是关键字,在定义和使用时均不能省略。 (2) 该结构体类型由6个成员组成。这6个成员分别属于不同的数据类型,各个成员之后的分号“;”不能省略。应特别注意的是,最后的分号是必不可少的。;9.1.2 结构体数据的定义和引用 1.先声明结构体类型再定义变量名 如上面已经定义了一个结构体类型struct student,可以用它来定义变量。如: struct student stu1,stu2; 定义了两个变量stu1和stu2,为struct student类型的变量。在定义了结构体变量之后,系统会为之分配内存单元。例如stu1和stu2在内存中所占的字节是struct student类型中各个成员所占字节数之和,即4+19+1+4+20+40=88字节。;2.在声明结构体类型的同时定义变量例如:struct student{ int num; char name[19]; char sex; int age; char tel[20]; char addr[40];}stu1,stu2;; 它的作用与第一种方法相同,即定义了两个struct student类型的变量stu1和stu2。这种在声明结构体类型的同时定义结构体变量一般形式为: struct 结构名 { 成员表列; }变量名表列;;3.直接定义结构类型变量例如:struct{ int num; char name[19]; char sex; int age; char tel[20]; char addr[40];}stu1,stu2;;其一般形式为: struct { 成员表列; }变量名表列;; 说明: (1) 结构体类型和结构体变量是不同的概念,不要混淆。在定义时一般先定义一个结构体类型,然后再定义该结构体类型的变量。注意:只能对结构体变量赋值、运算、输出,而不能对结构体类型赋值、运算、输出。 (2) 在编译时,对结构体类型不分配空间,只对变量分配空间。 (3) 一个结构体变量所占存储空间是各个成员所占存储空间之和。例如,上面定义的stu1, stu2所占存储空间的大小为4+19+1+4+20+40,共计88个字节。 ; (4) 结构体中的成员也可以是另一个结构体类型的变量,例如: struct date { int year; int month; int day; }; struct student {; in
文档评论(0)