C语言程序设计教程第8章结构体等构造数据类型ppt课件.ppt_第1页
C语言程序设计教程第8章结构体等构造数据类型ppt课件.ppt_第2页
C语言程序设计教程第8章结构体等构造数据类型ppt课件.ppt_第3页
C语言程序设计教程第8章结构体等构造数据类型ppt课件.ppt_第4页
C语言程序设计教程第8章结构体等构造数据类型ppt课件.ppt_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

第8章结构体等构造数据类型,本章需要掌握的知识点结构体的类型说明结构体变量的定义结构体成员的引用使用指针操作结构体数据,内容安排,8.1结构体8.2结构体数组8.3结构体与指针8.4结构体与函数*8.5联合体*8.6枚举8.7类型定义,8.1结构体,C语言提供结构体的目的结构体类型说明结构体变量的定义和初始化结构体成员的引用,1.C语言提供结构体的目的,举例:编写一个学生成绩打印程序,要求:请求用户输入学生的基本情况,其中包括每位学生的学号、姓名和成绩,将每位同学的成绩添加5分,然后按照以下格式输出学生的成绩列表。格式描述如下:学号姓名成绩1张三992王五60。,实例的数据分析,数据特点:描述学生基本信息的数据不是一个单独的数值、或者字符或者字符串。而是由学号、姓名和成绩等多个数据项一起构成的。,基于旧知识的数据对象描述,将学号、姓名和成绩分别定义为互相独立的简单变量。缺点:难以反映它们之间的内在联系。从而导致数据难于理解和处理。,结构体的引入,在C语言中,专门提供结构体机制来描述和处理这些由多个数据项组成的数据。,2.结构体类型的声明,结构体通常是由多个数据项所组成的集合体。构成结构体的数据项称之为结构体成员,每一个成员具有各自的名字,可以分别属于不同的数据类型。,struct结构体名类型标识符成员名;类型标识符成员名;.;,成员类型可以是基本型或结构体型,struct是关键字,不能省略,合法标识符可省:无名结构体,例structstudentintcode;/学号charname20;floatscore;,可换成charcode13;,3结构体变量的定义和初始化,1、结构体变量的定义2、结构体变量的初始化,1、结构体变量的定义,定义方法共3种先声明结构体类型,再定义结构体变量声明结构体类型的同时定义结构体变量使用无名结构体类型直接定义各种方法的适用情况?,a、先声明结构体类型再定义变量,例structstudentintcode;charname20;floatscore;structstudentstu1,stu2;,struct结构体名类型标识符成员名;类型标识符成员名;.;struct结构体名变量名列表;,b、声明类型的同时定义变量,例structstudentintcode;charname20;floatscore;stu1,stu2;,struct结构体名类型标识符成员名;类型标识符成员名;.变量名列表;,c、使用无名结构体类型直接定义,例structintcode;charname20;floatscore;stu1,stu2;,struct类型标识符成员名;类型标识符成员名;.变量名列表;,各种方法的适用情况,结构体类型只需使用一次,可以使用c方法。类型和变量的定义无法放置在一起的情况,必须使用a方法。如果变量的定义和类型的声明能够放置在一起,a、b方法都合适。,结构体变量的初始化,例structstudentintcode;charname20;floatscore;structstudentstu1=2,“WangWu”,99;,struct结构体名类型标识符成员名;类型标识符成员名;.;struct结构体名结构体变量=初始数据列表;,注意事项,类型和变量是不同的概念,不要混同。变量是一个具体的数据对象,可以参与运算。而类型不是。成员的类型也可以是一个结构体类型。,例structdateintmonth;intday;intyear;structstudentintcode;charname20;structdatebirthday;stu;,4结构体变量及其成员的引用,结构体变量的引用结构体变量成员的直接引用结构体变量成员的逐级引用,1、结构体变量的引用,可以将一个结构体变量作为一个整体赋值给另一个同类型的结构体变量。structstudents1=1,”wangli”,90,s2;s2=s1;不能将一个结构体变量作为一个整体进行输入和输出。只能对结构体变量中的各个成员分别进行输入和输出。,2、结构体变量成员的引用,成员(分量)运算符,引用方式:结构体变量名.成员名,例structstudentintcode;charname20;floatscore;s1,s2;s1.code=10;s2.score=85.5;s1.score=s2.score10;printf(“code=%d,score=%d”,s1.code,s1.score),3、结构体变量成员的逐级引用,结构体嵌套时需逐级引用,例structdateintmonth;intday;intyear;structstudentintcode;structdatebirthday;stu;stu.birthday.month=12;,8.2结构体数组,结构体数组的定义结构体数组的初始化结构体数组元素成员的引用,1、结构体数组的定义,类型说明符数组名常量表达式;inta100;structstudentstus20;,2、结构体数组的初始化,首先考虑数组的初始化。然后考虑数组中每一个元素的初始化,也就是对每一个元素进行结构体的初始化。,structstudentcharnumber13;charname20;floatClanguage;structstudents3=01,WangXiao2,78,02,Zhang3,99,03,Li4,91,3、结构体数组元素成员的引用,先数组元素再结构体成员假如有定义structstudentstus20;那么stus0.code就是引用stus数组中第1个元素中的code成员。,补充:结构体基本应用举例,需求描述数据结构描述程序输入部分程序处理部分程序输出部分程序的整体组合,1、需求描述,要求:请求用户输入学生的基本情况,其中包括每位学生的学号、姓名和C语言课程的成绩,将每位同学的成绩添加5分,然后按照以下格式输出学生的成绩列表。格式描述如下:学号姓名成绩1张三992王五60。,2、数据结构描述,#defineNUM20structstudentintcode;charname20;intscore;structstudentstusNUM;,3、程序输入部分,inti=0;printf(Pleaseinputcode,name,scoreofstudent%d:n,i+1);scanf(%d,for(i=0;iNUM;i+),4、程序处理部分,stusi.score=stusi.score+5;,for(i=0;iname,p-sex,p-age);,8.4结构体与函数,用结构体变量作参数用指向结构体变量的指针作参数,1、用结构体变量作函数参数,用结构体变量作为函数参数,可以从调用函数向被调用函数完整地传递结构体变量中的所有成员。,StruVarPara.c,1、用结构体变量作函数参数,for(i=0;iname);printf(%-5d,pStu-score);printf(n);,关键问题,传递地址相比较于传递整个数据对象有何优点?,开销小,速度快!,类型定义的格式如下:,例2:typedefstructstudentSTUDENT;STUDENTz3;,8.7类型定义,typedef原类型名新类型名;,例1:typedefintCOUNTER;COUNTERi;,使用类型定义可以提高程序的可读性,使用类型定义还可以简化变量的定义,structstudentintcode;charname20;intscore;structstudentzhangsan;,typedefstructstudentintcode;charname20;intscore;STUDENT;STUDENTzhangsan;,structstudent;,typedefstructstudentSTUDENT;,STUDENTzhangsan;,小结,如何声明一个新的结构体类型?定义结构体变量有哪些方法?分别适用什么情况?如何初始化结构体变量?如何引用结构体变量中的成员变量?如何定义和使用结构体数组?,小结(续),如何定义结构体类型指针?如何通过结构体指针访问结构体成员?结构体实参采用什么方式向形参传递数据?,课堂作业,请求用户输入学生的基本情况,其中包括每位学生的学号、姓名和两门课的成绩。然后用下面的格式输出学生的成绩列表。格式描述如下:学号姓名C语言数学平均成绩1张三607065。,要求:,编写3个函数,main函数、input函数、output函数。不能在

温馨提示

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

评论

0/150

提交评论