C++课件:第11章结构体与共用体.ppt_第1页
C++课件:第11章结构体与共用体.ppt_第2页
C++课件:第11章结构体与共用体.ppt_第3页
C++课件:第11章结构体与共用体.ppt_第4页
C++课件:第11章结构体与共用体.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、c第11章结构和公共机构,1。结构类型2的定义。结构变量的定义和引用。结构数组4。结构类型5的指针。链表的基本操作。公共体和枚举类型(理解)。结构类型介绍。问题:为了描述事物的不同属性,需要各种类型的数据,它们相互关联,形成一个有机的整体。例如,教师的基本信息由姓名、性别、年龄、职称和工资组成。如何描述老师的处境?我们以前学习过各种基本类型的变量和数组,我们知道所有的变量都是相互独立的,没有联系;和数组只能用于表示同一类型的一批数据。因此,如果用一个单一的变量来表达教师的姓名、性别、年龄等属性,很难反映他们之间的内在联系;如果使用数组,它根本无法表达,因为名字、性别、年龄等等。不是相同的数据类

2、型。在C语言中,“结构”用来描述由许多不同类型的数据组成的数据集。相当于其他高级语言中的“记录”。与基本数据类型不同,结构是另一种构造类型,它由多种类型的数据成员组成。因此,应该先定义这种类型的具体内容,然后再使用。可以定义以下结构类型来描述教师的基本情况:struct教师/*struct是关键字*/char name 30;/*内是这种类型的成员*/char性别;国际年龄;char位置10;浮动工资;/*语句的结尾是“;”*/结构类型称为结构教师,教师是结构的标识符;此类型包含六个成员数据项:姓名、性别、年龄、职位和工资,每个成员项都有自己的类型。可以看出,定义新结构类型的一般形式是结构结构

3、类型名称成员类型成员名称;成员类型成员名称;其中,struct是一个关键字,结构类型名和结构成员名的命名规则与变量的命名规则相同。特别说明:结构教师只是一个具体的结构类型,程序员可以根据需要定义多个不同内容的结构类型。其中成员项是类型的组件,而不是变量。结构类型的成员可以是基本类型的变量或数组,也可以是结构类型的数据。也就是说,结构类型的嵌套定义。例如,如果教师的年龄更改为出生日期,则出生日期可以定义为结构类型,然后嵌入到结构教师中。将出生日期单独定义为结构类型,然后嵌入它。结构日期类型整数年;int月;国际日;结构教师_2字符名称30;迷人的性爱;结构日期类型生日;char位置10;浮动工资

4、;(常用),直接嵌入。结构教师_3字符名称30;迷人的性爱;结构日期类型int yearint月;国际日;生日;char位置10;浮动工资;/*成员生日是另一种结构类型的数据。*/,11.2结构变量的定义和引用。在上述定义之后,结构类型struct教师与系统定义的类型int、long、float等相同。它可以用来定义这种类型的变量、数组和函数。区别在于结构类型的范围是有限的。函数体中定义的结构类型的范围是这个函数,函数体外定义的结构类型的范围是这个程序文件。要引用不在此文件中的结构类型,定义此类型的文件通常包含在#include命令中。示例11.1定义一个结构变量来存储教师的信息,然后输出它。

5、,#包含stdio。h main()结构教师/*此类型的作用域在此函数*/char name30中;迷人的性爱;国际年龄;char位置10;浮动工资;结构化教师人员;/*定义结构变量person */strcpy (person。姓名:王力);person . sex=f;/*为每个成员分配一个值*/人。年龄=30;strcpy(人.位置,中间);人。工资=1600;printf(n姓名性别年龄职位工资);printf(n%-10s s %8.2f,人名,人名,性别,人名,年龄,人名,职位,人名,工资);分析:*在本例中,结构类型在功能体中定义,其作用范围在该功能体中。*首先定义结构类型,然后

6、定义结构变量。*当输入和输出结构变量或向结构变量分配基本类型的数据时,应分别访问每个基本类型的成员,不能执行整个分配或输入和输出。例如,printf(“% s % c % d % s % f”,人);错了。person=li li ,f,24, primary ,1000;错了。示例11.2定义了一个包含地址簿中以下信息的结构类型:姓名、年龄、电话和邮寄地址;并定义变量的类型、输入数据和输出。l11 _ 2。c #包含stdio。h struct address _ list/*定义函数体*/char name10之外的结构类型;/*此类型的范围在此程序内*/int age;char tel1

7、0char地址40;main()结构地址列表s;/*定义变量s,占用62字节*/printf(n输入名称:);获取(s . name);printf(输入年龄:);Scanf(%d,分析:*结构类型address_list是在函数体之外定义的,其范围在此程序文件中。*结构变量的输入和输出需要逐个访问基本类型的成员,引用方法与相同类型的变量和数组相同。示例11.3定义了包含员工工资信息的结构类型:人数、姓名和工资。并定义变量来存储两个人的数据,然后交换和输出交换前后的信息。程序l11 _ 3.c #包含stdio.h main()结构薪资列表charno10char name30浮动工资;str

8、uct薪金表z,x=10,李明,2000,y=12,王艳,2500;/*结构变量的初始化,给出每个成员的数据并将其括起来,用逗号分隔每个成员*/,printf(n无名称工资);printf(nx:%-5s%-6s.2f,x.no,,x.salary);printf(ny:%-5s%-6s.2f,y.no,,y.salary);z=x;x=y;y=z;/*交换两个结构变量*/printf(naftex change 3360);printf(nx:%-5s%-6s.2f,x.no,,x.salary);printf(ny:%-5s%-6s.2f,y.no,y.

9、name,y.salary);特别说明:同一类型的结构变量可以作为一个整体赋值,也就是说,一个结构变量可以作为一个整体赋给另一个相同类型的结构变量。描述1。定义结构变量有三种方法(第一种常用):方法1:首先定义结构类型,然后定义结构变量。例如,结构教师t1、T2;(示例11.1)方法2:在定义结构类型的同时定义结构变量(示例11.2)。另一个例子是:结构课程数学不再;4B字符名称30;数学,英语;30B如果将来需要使用这种结构类型,定义方法同1:结构课程化学;方法3 :的格式与方法2相同,其中省略了类型名称过程,但缺点是不能再次引用该类型。*结构变量的存储:系统根据结构类型中每个成员的类型为变

10、量分配存储空间。如上图所示:没有名字,说明2。结构变量的引用。定义结构变量后,可以在两个级别进行引用:*访问结构变量的成员。*引用整个结构变量。1.请使用成员运算符“.”指结构变量的成员,以及“.”的优先级仅次于括号。例如人员的分配、输入和输出。名字,人。例11.1、11.2和11.3中的年龄x.no、s、工资和其他成员。人。年龄等于(人。年龄)。对结构变量中的成员的操作与对基本类型变量的操作完全相同。注意:当结构类型被嵌套和定义时,它们应该被逐步访问。如struct教师_2页;pp .生日.=19992.同一类型的结构变量可以作为一个整体来分配。交换两个结构变量的值,如示例11.3所示。11

11、.2结构数组,用于存储一批相同类型的结构数据。每个数组元素相当于一个结构变量。示例:11.4输入三门课程的信息(课程编号、课程名称)并输出。分析:*每门课程的信息包含两个项目,用结构类型表示,其成员有两个项目,即课程编号和课程名称。*三个课程的信息保存在一维数组中。输入:您可以指定初始值或由用户输入。在本例中,采用了分配初始值的方法。程序l11_2_1.c说明:结构数组的初始化与基本类型的一维数组相同,只是每个数组元素都是一个由。数组元素中每个成员的访问权限与变量成员的访问权限相同。输入N名学生的学号、姓名和三门课程的成绩,计算每个人的平均成绩,按照平均成绩从高到低进行排序,并输出排序后的成绩表。分析:*每个学生的信息包括多个项目,这些项目用结构类型表示。其成员包括学生人数、姓名、三门课程的成绩和平均成绩。n个学生的信息存储在一维数组中。*算法:输入和计算平均分数,排序和输出三个步骤。后两种功能可以通过函数实现,并在主函数中调用。让排序函数是sort()并且输出函数是output()。分析每个函数的具体组成:函数类型参数函数体程序l11 _ 2 _ 2.c,/*示例11.5程序*/结构stu

温馨提示

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

评论

0/150

提交评论