资源描述:
《C语言程序设计 教学课件 作者 黄锐军 第9章 结构.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章结构在这一章中将介绍C语言程序的结构,结构是多个变量的集合,这些变量在内存中连续分布,对外形成一个整体,是数据的一种封装形式,它是对基本数据类型的扩充,是面向对象程序设计的雏形。9.1结构概述9.2结构变量与指针9.3结构与函数9.4结构与单链表9.1结构概述9.1.2结构的定义结构是一种构造类型,它是由若干成员组成的,每一个成员可以是一个基本数据类型。结构既是一种构造而成的数据类型,那么在说明和使用之前必须先定义它,也就是构造它。定义一个结构的一般形式为:struct结构名称{成员表列;};成员表由若干个成员组成,每个成员都是该结构的一个组成部分。对每个成员也必须作类型
2、说明,其形式为:类型说明符成员名;结构是其成员变量的总和,在内存中就是几个成员变量连续分布在一起,它们形成一个整体。用定义的结构可以定义结构变量,方法是:struct结构名称结构变量名称;通过结构变量可以存取结构的每一个成员,方法是:结构变量.成员变量structtime{inth,m,s;};图9-2time结构与成员变量变量9.2结构变量与指针9.2.1结构变量结构题变量通过一个小数点来连接其成员变量,从而存取其成员变量的值,例如:structtime{inth,m,s;};structtimet;在前面结构和变量是分开定义的,实际上在定义结构的同时也可以定义变量,例如:s
3、tructtime{inth,m,s;}t1,t2;则在定义time结构的同时定义了t1与t2两个变量。9.2.2结构变量指针结构变量也可以取其地址,得到结构变量的指针,例如:structtime{inth,m,s;};structtime*p,t;inth,m,s;p=&t;结构指针通过“->”的符号来连接成员变量,从而存取成员变量的值,例如:p->h=1;p->m=2;p->s=3;//对成员变量赋值h=p->h;m=p->m;s=p->s;//取成员变量的值注意“->”是一个减号与一个箭头的组合,虽然是两个符号,但应该看成是一个不可分割的符号,用它来连接结构变量的指针与成
4、员变量。9.2.3结构变量初始化在定义变量或数组时可以初始化,在定义结构变量时也可以初始化结构变量,例如:structtime{inth,m,s;};structtimet={1,2,3};则在定义了变量t的时候对它进行初始化赋值,既t.h=1、t.m=2、t.s=3。就像数组的初始化一样,在初始化赋值时可以为每个成员提供初始值,这样每个成员都有一个对应的初始值;也可以只为前面部分成员提供初始值,这时后面没有提供初始值的成员就自动为0,例如:structtimeta={1,2,3},tb={12};//结果ta.h=1,ta.m=2,ta.s=3,tb.h=12,tb.m=0,
5、tb.s=09.2.4结构与数组结构是一种构造类型,它就像普通数据类型一样,可以用结构类型来定义数组,数组的元素可以是结构类型的,因此可以构成结构型数组。结构数组的每一个元素都是具有相同结构类型的下标结构变量。在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体,例如:structtimetimes[3];则times是一个数组,有times[0]、times[1]、times[2]三个元素,每个元素都是一个structtime的变量,可以用times数组来表示三个不同的时间。9.2.5结构的结构结构的成员变量一般是基本数据类型,其实也可以是一个已经定义过的结构类型,例
6、如定义日期类型date如下:structdate{inty,m,d;};其中y、m、d分别表示年、月、日。如果要表示一个时刻,则应该是日期date与时间time的组合,这种应用非常多,例如在计算机中一个文件的创建日期就是这样的。可以设计一个日期时间结构,例如:structdatetime{intyear,month,day;inthour,minute,second;};year、month、day是年、月、日,hour、minute、second是时、分、秒。但是在已经定义了日期结构date及时间结构time之后,就没有必要再这样定义datetime结构,一种比较好的方法是:
7、structdatetime{structdated;structtimet;};这样定义的日期时间结构条理更清晰,datetime结构中包含了2个变量,其中d变量是一个date结构变量,t变量是一个time结构变量,用datetime定义变量:structdatetimedt;则dt.d是一个structdate变量,(dt.d).y是年份,可以直接写成dt.d.y,dt.d.m是月份,dt.d.d是日期。同样dt.t.h、dt.t.m、dt.t.s分别是时、分、秒。这种结构中包含结构的方