(演示)计算机程序设计基础(c语言)-第8章_结构体与共用体.ppt_第1页
(演示)计算机程序设计基础(c语言)-第8章_结构体与共用体.ppt_第2页
(演示)计算机程序设计基础(c语言)-第8章_结构体与共用体.ppt_第3页
(演示)计算机程序设计基础(c语言)-第8章_结构体与共用体.ppt_第4页
(演示)计算机程序设计基础(c语言)-第8章_结构体与共用体.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,第8章 结构体与共用体,2,本章内容,结构体 、共用体 类型的定义 结构体变量、结构体数组,3,基本数据类型和构造数据类型,基本数据类型 在高级语言中引入了基本数据类型:整型、实型、字符型等 构造数据类型:由基本数据类型按一定的规则组成. 数组:具有一定顺序关系的若干相同类型变量的集合的用户自定义的(构造)数据类型. 结构体:是一个或多个相同数据类型或不同数据类型的变量集合在一个名称下的用户自定义的(构造)数据类型. 共用体:将不同的数据类型组合在一起,共占同一段内存的用户自定义的(构造)数据类型.,4,思考 :为什么要使用结构体?,在程序里表示一个人(姓名、年龄、性别等),怎么表示? 想

2、表示多个人呢? 如何用c程序实现下述表格的管理?,表8-1 某学校学生成绩管理表,5,数组的解决方法,int studentId30; /* 最多可以管理30个学生, 每个学生的学号用数组的下标表示*/ charstudentName3010; charstudentSex302; int timeOfEnter30; /*入学时间用int表示*/ int scoreComputer30;/*计算机原理课的成绩*/ int scoreEnglish30; /*英语课的成绩*/ int scoreMath30; /*数学课的成绩*/ int scoreMusic30; /*音乐课的成绩*/,6,

3、数组的解决方法,学生管理数组结构的内存分配图,分配内存不集中,寻址效率不高 对数组进行赋初值时,容易发生错位 结构显得比较零散,不容易管理,7,希望的内存分配图,8,结构体类型的声明(结构体定义),数据样板:,一般形式:,struct 结构体名 类型关键字 成员名1; 类型关键字 成员名2; . 类型关键字 成员名n; ;,构成结构体的变量称为结构体的成员,结构体的定义只定义了数据的形式,即声明了一种复杂的数据类型,并未生成任何变量。,9,结构体类型的声明(结构体定义),struct student intstudentID; charstudentName10; char studentSe

4、x4; int timeOfEnter; int scoreComputer; int scoreEnglish; int scoreMath; int scoreMusic ;,10,结构体变量的定义,方法一:先定义结构体类型再定义变量名,方法二:在定义类型的同时定义变量,struct student student1,student2;,struct student intstudentID; charstudentName10; char studentSex4; int timeOfEnter; int scoreComputer; int scoreEnglish; int scor

5、eMath; int scoreMusic student1,student2;,11,结构体变量的定义,方法三:直接定义结构体变量(不出现结构体名) struct int studentID; charstudentName10; char studentSex4; int timeOfEnter; int scoreComputer; int scoreEnglish; int scoreMath; int scoreMusic; student1,student2;,12,结构体变量的引用,有严格的规定 不能将一个结构体变量作为一个整体实施输入和输出操作,只能对每个具体的成员进行输入,输

6、出操作. 对于结构变量,要通过成员(圆点)运算符“.”逐个访问其成员,且访问的格式为: 结构体变量名.成员名 例: st1. studentID =99001; 如果某成员本身又是一个结构类型,则只能通过多级的运算,对最低一级的成员进行引用 结构体变量名.成员名.子成员名.最低1级子成员名 例: st1. timeOfEnter.year=2005;,13,结构体变量的引用,对最低一级成员,可像同类型的普通变量一样,进行相应的各种运算. 例:st2. studentID = st1. studentID+1 ; strcpy(st1.studentName,”令狐冲”); 既可引用结构变量成员

7、的地址,也可引用结构变量的地址. 例:,14,结构体变量的初始化,结构体变量=初值表; 如果某成员本身又是结构类型,则该成员的初值为一个初值表 注意:初值的数据类型,应与结构变量中相应成员所要求的一致,否则会出错 如: st1=1,令狐冲,男“,1999,12,20,90,83,72,82 ,示例:结构体变量的使用,见 程序示例,15,结构体数组,结构体数组的每一个元素,都是结构类型数据,均包含结构类型的所有成员. 结构体数组定义 与结构变量的定义相似,有三种方式,只需说明为数组即可 结构体数组的初始化 初始化的格式为: 结构数组n初值表1,初值表2,.,初值表n;,16,结构体数组,stru

8、ct STUDENT intstudentID; charstudentName10; char studentSex4; struct date timeOfEnter; int scoreComputer; int scoreEnglish; int scoreMath; int scoreMusic; ; struct STUDENT stu30 = 1,令狐冲,男,1999,12,20,90,83,72,82, 2,林平之,男,1999,07,06,78,92,88,78, 3,岳灵珊,女,1999,07,06,89,72,98,66, 4,任莹莹,女,1999,07,06,78,95

9、,87,90 ;,17,示例:候选人得票的统计程序,设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出得票的的结果,li li zhao zhang zhang li:2 zhang:2 zhao:1,见 程序示例,18,指向结构体变量的指针,结构体变量的指针:结构变量在内存中的起始地址 指向结构体变量的指针 struct pointint x;int y; struct point pt=1,2; struct point *ppt; ppt = ,19,指向结构体变量的指针,怎样通过ppt访问pt的成员(对结构体成员的引用)? 结构体变量. 成员名 例:pt.x = 0; (*指

10、针变量). 成员名 例:(*ppt).x = 0; 指针变量- 成员名 例: ppt-x = 0; 以上三种方法等价,20,结构体数组和指针,struct STUDENT *pt; pt = stu;,例:计算学生各科成绩的平均分 教材328页,见 程序示例,21,关键字typedef 的用法,typedef为一种已存在的类型定义一个新名字 即为已经定义的数据类型定义一个”别名”,也可以说是用户可以定义自己的类型名,而不用系统给定的类型名. 例: typedef unsigned float ufl; ufl x,y; 同样: typedef struct student Stud; Stud student1,student2; Stud与 struct student类型是同义词,22,共用体(联合),概念 将不同的数据类型组合在一起,共占同一段内存的用户自定义的构造数据类型 共用体类型的定义 union 共用体名 成员列表; 共用变量的定义 与结构体变量的定义类似,有三种方式 共用体的作用 -节省内存空间. -避免逻辑上的冲突.,23,共用体(联合),union numberint x; float y; 基本上和struct一样 x和y处于同样的地

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论