C语言程序设计(第二版)电子教案任正云 第9章结构体和共用体.pptVIP

C语言程序设计(第二版)电子教案任正云 第9章结构体和共用体.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 结构体和共用体 9.1 概述 9.2 结构体与结构体类型变量 在C语言中,结构体是不同数据类型的集合。 9.2.2 结构体类型变量的定义 应当定义结构体类型的变量,并在其中存放具体的数据。定义方法有以下三种: 9.2.2 结构体类型变量的定义 有关结构体类型需要说明的是: 1)结构体类型与变量的概念。 只能对变量进行操作(赋值、存取或运算),而不能对一个结构体类型进行操作。编译时,只对变量分配内存空间,对结构体类型不分配内存空间。 2)对结构体中的成员可以单独使用,它的作用与地位相当于普通变量。 3)结构体的成员也可以是一个结构体变量,从而构成嵌套结构。 9.2.3 结构体变量的引用 结构体变量也可以像其他类型的变量一样赋值、存取或运算,所不同的是结构体变量必须以成员作为基本单位来参与。 结构体成员的表示方法为: 结构体变量名.成员名 例如: student1.num 表示第一个人的学号; student2.sex 表示第二个人的性别。 关于引用结构体成员有几点说明: (1)如果结构体成员本身又属于一个结构体类型,则需要若干个成员运算符,一级一级来找到最低的成员,且只能对最低级的成员进行赋值、存取或运算 student1.month student1.birthday.day student1.birthday.year (2)结构体变量中各成员的使用方法与普通的简单类型变量完全相同。 student1.sex = student2.sex; student1.num++; (3)不能将结构体变量作为一个整体进行输入和输出。 9.2.4 结构体变量的初始化 与普通变量一样,对结构体变量可以在变量定义时指定初始值,也就是给结构体变量的各个成员项赋初值。 9.3 结构体数组 结构体变量也可以构造成数组,称为结构体数组。 每个结构体数组元素都是一个结构体变量,都含有结构体的各个成员项。 每个数组的元素在内存中的地址是按照数组下标的顺序连续的。 结构体数组的定义方法,例如: struct student { int num; char name[20]; float score; } student1[45]; 结构体数组的初始化: struct student { int num; char name[20]; float score; } a[2]={{1001,Zhang,85},{1002,Wang,86}}; 9.4 指向结构体类型数据的指针 结构体变量或数组也是内存中的对象,可以通过指针进行访问。 指向结构体变量的指针称为结构体指针,实质上是指向结构体变量的首地址,其逻辑上加1,等于加一个结构体类型所占的字节数,即加一个结构体的长度。 结构体指针必须先说明,然后指向同类型的对象再通过指针引用所指对象的各个成员项。 9.4.1 指向结构体变量的指针 指向结构体变量的指针变量的定义的一般形式为: struct 结构体名 *结构体指针变量名 例如: strcut stud_score { int num; char name[20]; float score; }; struct stud_score *spoint; 结构体变量访问的一般形式为: (*结构体指针变量).成员名 或为: 结构体指针变量-成员名 例如: (*spoint).num 或为: spoint-num 9.4.2 指向结构体数组的指针 指针变量也可以指向一个结构体数组,这时结构体指针变量的值是整个结构体数组的首地址。 9.4.3 结构体指针变量作为函数的参数 将一个结构体变量的值传递给另一个函数,有3种方法: (1)用结构体变量的成员作参数。用法和普通变量作实参是一样的,属于“值传递”方式。应当注意实参与形参的类型保持一致。 (2)结构体变量作实参。在ANSI C标准中允许用结构体变量作参数进行整体的传送,但这种传送方式要经全部成员逐个传送,特别是成员为数组时将会使传送的时间和空间开销很大,严重地降低了程序的效率。因此,一般较少采用这种方法。 (3)用指向结构体变量(或数组)的指针作为实参,将结构体变量(或数组)的地址传给形参。用指针变量作函数参数进行传送,这时由实参传向形参的只是地址,减少了时间和空间的开销。 9.4.4 结构体与函数的类型 结构体除了可以作为函数的参数外,函数的返回值也可以是结构体变量或是指向结构体变量的指针。 当函数的返回值是一个结构体变量时,称该函数为一个结构体类型函数,其一般形式为: struct 结构体名 函数名(形参表) { 函数体 } 9.5.1 链表

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档