资源描述:
《c语言程序设计6(结构、指针、文件).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第6章数据的组织结构(二)6.3文件6.2指针类型6.1结构体类型6.4联合体与枚举类型6.1结构体类型6.1.1结构体类型的概念将若干个不同数据类型的变量组合在一起的复合型数据类型1.结构体类型的声明格式:struct结构体类型名{数据类型成员1;数据类型成员2;......数据类型n成员n;};组成结构体的每个数据称为该结构体的成员。例如:用于描述坐标点的结构体类型的声明structpoint_type{intx;/*x坐标*/inty;/*y坐标*/};例如:用于描述日期的结构体类型的声明structdate_type{intyear;/*年
2、*/intmonth;/*月*/intday;/*日*/};结构体名结构体类型的定义仅仅是定义了一种特定的数据构造类型,它制定了这种构造使用内存的模式。并不引起系统为该结构体分配内存空间。yearmonthday2字节2字节2字节2结构体类型变量的定义先声明结构体类型再定义变量名结构体类型名变量名structpoint_typep1,p2;结构体类型名结构体类型变量的定义会引起系统按照结构体定义时制定的内存模式,为被说明的结构体类型变量分配一定的内存空间。结构体变量名struct结构体名结构体变量名在声明类型的同时定义变量例如:structpoin
3、t_type{intx;inty;}p1,p2;结构体的成员也可以是另一个结构体的变量(结构体嵌套)structrectangle_type{structpoint_typelefttop;/*左上角的坐标*/structpoint_typerightbottom;/*右下角的坐标*/};在C语言中,允许用户为已经存在的数据类型起一个别名,其说明格式为:格式:typedef原数据类型新数据类型名;用typedef声明新的类型名来代替已有的类型名typedefintINTEGER;typedeffloatREAL;指定用INTEGER代表int类型,
4、REAL代表float。这样,以下两行等价:①inti,j;floata,b;②INTEGERi,j;REALa,b;为结构体类型point_type起一个别名POINT:typedefstructpoint_type{intx;inty;}POINT;在这里,POINT与structpoint_type完全等价或:typedefstructpoint_typePOINT;定义point_type结构体类型的变量p1,p2:POINTp1,p2;3.结构体变量的初始化struct结构体类型名变量名={成员值列表};例:structpoint_typ
5、ep={10,20};structdate_typed={2005,5,20};structrectangle_typerect={{10,10},{100,100}};4.结构体变量的引用不能把结构体变量作为一个整体参加数据处理,参加各种运算和操作的只能是结构体变量中的各个成员项数据。结构体成员项的引用方式为:结构体变量名.成员名“.”是成员运算符,访问结构体的成员例如:p.x,p.y当出现了结构体的嵌套时,即成员本身是另一个结构体变量时,需用若干个成员运算符,一级一级地找到最低一级的成员。只能对最低级的成员进行操作和运算如:structrect
6、angle_typerect;rect.lefttop.x,rect.lefttop.y5.结构体型变量的基本操作结构体型变量的输入scanf(“%d%d%d”,&d.year,&d.month,&d.day);结构体型变量的输出printf(“%d%d%d”,d.year,d.month,d.day);结构体型变量的赋值对每个成员赋值:d.year=2005;如果一个结构体型变量已经被赋值,并且希望将它的值赋给另外一个类型完全相同的结构体型变量,则可以采用整体赋值的方式。例:structdate_typed2;d2=d;6.1.2学生基本信息的组
7、织方式学生基本信息的组织和管理是一个十分有代表性的结构体应用实例。为了简化程序的复杂度,减少程序的书写量,在这里,假设学生的基本信息只包括:学号、姓名、出生日期、所属院系、所学专业。例1:通过键盘输入30名学生的基本信息,并显示输出。然后,再通过键盘输入一个月份和日期,查找并输出本年度在这个给定日期之后过生日的学生信息。为了表示一名学生的基本信息,应该声明一个包括学号、姓名、出生日期、所属院系、所学专业的结构体类型。“出生日期”需要用三个数据项才能够表示完整,而“日期”是一个独立的概念,也应该为之声明一个结构体类型。组织30名学生的信息。30名学生
8、的基本信息属于同一个性质的数据,因此,应该利用一维数组将它们组织在一起。问题分析算法描述开始结束inputInfo()ou