ImageVerifierCode 换一换
格式:PPT , 页数:29 ,大小:308KB ,
资源ID:15496107      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15496107.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第8章-结构优质PPT.ppt)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第8章-结构优质PPT.ppt

1、结构类型的定义用关键字struct引导,其基本形式如下q结构类型名称由用户自己定义,该名称和struct关键字共同构成了结构类型的描述;中包围的是组成该结构的成员描述序列,成员的数量可以是一个也可以是多个。每个成员描述的形式与变量定义一样,需要给出成员变量的类型和名字,并用分号结束。多个成员的描述信息是平行的,顺序可以调换,使用时依据成员名字确定对应关系。struct 结构类型名称 成员列表;高职学院高职学院 计算机教研室计算机教研室程序设计基础程序设计基础5结构类型定义q前面提到的学生信息就可以采用如下方式定义为一个结构类型:q自定义的结构类型和系统提供的标准数据类型(如int、char、f

2、loat、double)一样,都可以用来定义变量,只是对于结构类型需要先由用户完成类型的定义,才能定义对应的结构类型的变量。q有了上面结构类型定义的描述,就可以定义对应的结构变量了,如:struct _StuInfo stu1,stu2;q就定义了两个_StuInfo结构类型的变量,“struct _StuInfo”为新定义的结构类型的关键字,对应变量的名字为stu1和stu2。struct _StuInfo char name10;int age;char addr50;char phone20;高职学院高职学院 计算机教研室计算机教研室程序设计基础程序设计基础6结构类型定义q上述结构变量的

3、声明也可在结构类型定义的同时完成,描述为:qC语言中还支持通过typedef关键字,为用户自定义的结构类型取一个别名,以方便在程序中使用。如上面的结构类型定义可改写为右图q程序中需要定义此结构类型的变量时,可以使用STUINFO代替原来的struct _StuInfo:STUINFO stu1,stu2;等价于 struct _StuInfo stu1,stu2;q上述两条语句都声明了两个结构变量。为了与其他变量类型关键字和对象名字区分,本书中自定义结构类型的名字均采用大写字母表示。stu1,stu2;typedef struct char name10;STUINFO;高职学院高职学院 计算

4、机教研室计算机教研室程序设计基础程序设计基础7结构类型定义qtypedef关键字不仅可以给自定义的结构类型取别名,也可以对已有的标准数据类型起别名,如:typedef int INTEGER;typedef float REAL;q在具有上述typedef语句的程序中,下列语句就是等价的:int i,j;等价于 INTEGER i,j;float pai;等价于 REAL pai;q结构类型的成员可以是任何类型的变量,也可以是结构类型。对于前面磁盘文件信息就可以定义为:typedef struct int month;int day;int year;MYDATE;typedef struct

5、 char file_name50;int size;MYDATE create_time;MYFILE;高职学院高职学院 计算机教研室计算机教研室程序设计基础程序设计基础8结构变量的初始化q结构类型的定义一般书写在程序的开头,放在所有函数(包括main函数)的定义之前,以便本文件中所有的函数都能使用它来定义变量。当然也可以在具体函数定义中定义结构类型,仅供本函数体内使用。q结构类型的定义语句并不会产生内存分配,仅是对结构类型构成的说明,只有在定义相应的结构变量时才分配内存空间。结构变量的定义可以出现在任何可以定义普通变量的地方,同样遵守变量先定义后使用的原则。q与简单变量和数组一样,定义结构

6、变量的同时也可以直接进行初始化。对结构变量的初始化就是为结构变量的成员提供初值,形式上与数组的初始化相似。下面结构变量的定义包含了相应的初始化描述:STUINFO stu1=“Zhang”,21,“Beijing,china”,“01012345678”;q定义了STUINFO类型的变量stu1,初始化后的stu1变量在内存中可表示为:q这种对结构变量各个成员整体赋值的形式只能出现在结构变量定义时的初始化操作,而不能用于对已经定义了的结构变量赋值。stu1Zhang21Beijing,china01012345678nameageaddrphone高职学院高职学院 计算机教研室计算机教研室程序

7、设计基础程序设计基础9结构变量的使用q程序中对结构变量的操作主要有两种情况:操作整个结构变量和对结构变量的成员变量的访问。对于整个结构变量的操作通常仅限于同类型的结构变量之间进行整体赋值,从而得到结构变量值的新的副本,如下面语句:STUINFO stu1=“Li”,20,“Shanghai,china”,“020156545678”,stu2;stu2=stu1;q程序中对结构变量的使用更多是对其成员变量的访问,包括对结构变量的输入输出、存取等操作,都是通过操作结构变量的成员实现。C语言提供了圆点运算符(.)来实现对结构变量成员的访问,具体访问方式是在结构变量名的后面加上一个圆点,再加上成员变

8、量的名称。对于结构变量的成员变量,可以像同类型的普通变量一样进行使用,对其进行赋值和读取。q如果初始化时把Zhang同学的年龄和电话号码录入错误,可以通过如下语句对其进行修正:stu1.age=19;strcpy(stu1.phone,“01078675645”);高职学院高职学院 计算机教研室计算机教研室程序设计基础程序设计基础10结构变量的使用q也可以使用printf语句对stu1变量的各个成员变量的值进行输出:printf(“stu1.name is:%sn”,stu1.name);printf(“stu1.age is:%dn”,stu1.age);printf(“stu1.addr

9、is:%sn”,stu1.addr);printf(“stu1.phone is:%sn”,stu1.phone);q需要注意格式控制符与成员变量类型的匹配,不能使用printf语句对结构变量进行整体输出,下面写法是错误的:printf(“%s%d%s%sn”,stu1);q如果成员变量依然是结构类型,则需要再次通过圆点运算符去访问其成员,直到成员变量为普通数据类型。例如:MYFILE fp=“C Programming”,10240,3,14,2014;printf(“The file%s is created at%d-%d-%dn”,fp.name,fp.create_time.year

10、,fp.create_time.month,fp.create_time.day);q结构变量成员可以和其他普通变量具有相同的名字,但不会引起混淆。因为,结构变量的成员变量不是单独存在的,也不能直接使用,必须和结构变量的名字一起使用才表示其为具体某个结构变量的成员变量,而不是普通变量。高职学院高职学院 计算机教研室计算机教研室程序设计基础程序设计基础11结构变量示例q例例8-1 编写程序,计算两点间的直线距离并输出。q分析:数学中我们知道,一个点可以用两个坐标来表示(x,y),其中x表示水平坐标,y为垂直坐标。若两点坐标分别为(x1,y1)和(x2,y2),则两点间的直线距离可以用如下公式表示

11、:x=x1-x2,y=y1 y2;距离d=。q为了更好的在程序中表示一个点,可将其定义为一个结构类型,由x坐标和y坐标两个成员表示,如:typedef structdouble x;double y;#include#include typedef structdouble x;POINT;int main()POINT point1,point2;double x,y,result;printf(Enter point1 coordinate:);scanf(%lf%lf,&(point1.x),&(point1.y);printf(Enter point2 coordinate:(poin

12、t2.x),&(point2.y);x=point1.x-point2.x;y=point1.y-point2.y;result=sqrt(x*x+y*y);printf(The distance about(%.2f,%.2f)and(%.2f,%.2f)is:%.2fn,point1.x,point1.y,point2.x,point2.y,result);return 0;高职学院高职学院 计算机教研室计算机教研室程序设计基础程序设计基础12结构变量的存储 q结构变量在内存中采用连续的内存空间依次存储所有成员变量,正常情况下单个结构变量所占用的内存空间应该是其所有成员所占存储空间的总和。

13、如前面定义过的结构类型STUINFO q对应的结构变量成员中有3个char型数组,长度分别为10、50和20,1个整型变量,其成员正常占用的存储空间大小应为:(10+50+20)*1+1*4=84q可通过sizeof()运算符来检查这种类型的结构变量实际占用存储空间的大小。结果sizeof获得的结果(88)与理论上的计算结果84有4个字节上的差异,即实际存储时多用了4个字节。具体原因参考教材,略typedef struct char name10;高职学院高职学院 计算机教研室计算机教研室程序设计基础程序设计基础13结构数组 q结构里可以包含数组成员,同时也可以定义以结构作为元素的数组。结构数组的定义与普通元素构成的数组相似,使用时需要遵守结构变量及其成员的运算

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1