欢迎来到天天文库
浏览记录
ID:40238527
大小:1.68 MB
页数:52页
时间:2019-07-28
《C语言程序设计 曹玲焕 孙萍主编 第十章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章结构体和共用体前面我们介绍的数据类型,只能用来描述事物某一方面的属性,若要全面反映事物各方面的属性,只有这些数据类型就不够了。例如,要反眏一个学生的情况(属性),应包括学号(num整型)、姓名(name字符串)、三门功课的分数(score[3]实型数组)。即需用多个属性的结合才能把学生的情况描述清楚。这种结合是一个相互联系的整体,密不可分,归属于同一个对象——学生,称之为结构体。由于事物的多样性及描述的同一事物的复杂性。结构体中成员属性的个数、名称、类型不尽相同,所以定义一种结构体只能用于某一具体对象,换一个问题需要重新定义,
2、也就是说,结构体类型是由用户自己指定的,是一种用户定义类型。本章还要介绍共用体(也称为联合),自定义型等。主要内容10.1结构体类型10.2结构体数组10.3结构体与函数10.4指针和结构体10.5链表10.6共用体类型10.7自定义类型10.1结构体类型概念结构体是由不同数据类型组成的集合体,组成整个结构体的数据称为结构体成员,简称成员。在程序使用结构体时,首先应对结构体的组成进行描述,这种描述称为说明。结构体类型10.1.1结构体类型的说明10.1.2结构体类型变量的定义10.1.3结构体变量的初始化10.1.4结构体成员引用10
3、.1.5结构体变量的赋值运算10.1.1结构体类型的说明结构体类型说明的一般形式如下:struct结构体名{数据类型成员名1;数据类型 成员名2;…数据类型成员名n;};其中,struct是关键字,表示后面指定了一个结构体类型。“结构体名”和“成员名”都是用户定义的标识符,一对大括号之间的内容,是对结构体成员的描述.为了描述日期可以说明如下结构体:structdate{intyear;/*年:整型作为结构体中的成员*/intmonth;/*月*/intday;/*日*/};在这个结构定义中,结构体名称为date,可以称这个结构体类型名
4、为structdate。在structdate结构体中,有三个成员year,month和day,三个成员均为整型。结构体中成员的类型,不仅可以是基本类型,数组类型,指针类型,也可以是某种结构体类型。当结构体中又包含结构体时,称为结构体的嵌套。为了描述学生情况,可以说明一个名为student的结构体,包含学号(num)、姓名(name)、出生日期(birthday)、三门课程的考分(score[3])。学号的数据类型可以是整型,也可以是字符串,出生日期的类型取前面已经说明的structdate结构体类型,考分取实型数组,以便以后进行循环
5、处理。结构体student说明如下:structstudent{intnum;charname[10];structdatebirthday;floatscore[3];};在程序中,结构体的定义可以在一个函数的内部,也可以在所有函数的外部,在函数内部定义的结构体,仅在该函数内部有效,而定义在外部的结构体,在所有函数中都可以使用。结构体类型的说明明确了结构的组成形式,说明了一种C语言中原来没有、而用户实际需要的新的数据类型。编译程序并没有因此分配存储空间,只有在定义结构体变量时才分配内存空间。10.1.2结构体类型变量的定义结构体一经
6、说明,就可用来定义该结构体类型的变量了。定义结构体类型变量,可以采用以下三种方法。1.先说明结构体类型,后定义结构体类型的变量例如:为结构体student定义两个名为st1和st2的变量。方法一:在已对结构体date和student作了说明后,用下面的定义语句:structstudentst1,st2;方法二:由于结构体类型名“structstudent”太长,书写麻烦,可在程序的开头定义一个符号常量“STRSTU”来代替结构体类型,即#defineSTRSTUstructstudentstructdate{intyear;intmo
7、nth;intday;};structstudent{intnum;charname[10];structdatebirthday;floatscore[3];};STRSTUst1,st2;2.在定义结构体类型的同时定义结构体类型的变量这种方法的一般形式如下:struct结构体名{数据类型 成员1;数据类型 成员2;…数据类型 成员n;}结构体变量名表;例如:structdate{intyear;intmonth;intday;};structstudent{intnum;charname[10];structdatebirthda
8、y;floatscore[3];}st1,st2;3.定义无名结构体的同时定义结构体类型的变量其一般形式如下:struct{数据类型 成员1;数据类型 成员2;…数据类型 成员n;}结构体变量名表;方法一:取消结构体名
此文档下载收益归作者所有