第九章结构体、共用体和枚举类型.ppt

第九章结构体、共用体和枚举类型.ppt

  1. 1、本文档共89页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档