欢迎来到天天文库
浏览记录
ID:34643524
大小:267.66 KB
页数:31页
时间:2019-03-08
《浙江大学刘加海c语言课件6》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、181第6章结构体与共用体第6章结构体与共用体u本章重点1.结构体类型的定义及结构体变量的定义。2.结构体变量占用的内存空间。3.结构体变量对结构体成员的引用方法。4.结构体指针变量对结构体变量、结构体数组的应用。5.结构体变量作为函数的参数。6.链表:堆栈与队列。7.共用体的应用。u本章难点1.正确理解结构体类型与结构体变量的关系。2.结构体数组变量对结构体成员的引用,指向结构体变量的指针对结构体成员的不同引用方法。3.结构体变量的输入输出。4.结构体变量作为函数的参数。5.结构体的嵌套,堆栈与队列的应
2、用。结构体(struct)和共用体(union)是C语言中程序员自定义的数据类型,它是一种常用的数据类型。结构体能把若干不同类型的变量组织到统一的名字之下,也称聚合数据类型,而通过共用体允许把同一片内存定义成多种不同类型的变量。6.1结构体的基本概念以前各章所讨论的数据是单一的数据类型,而在实际应用中所涉及到变量的属性是各种基本数据类型的组合,因而在C语言程序设计中引入了结构体类型的概念。结构体类型是C语言的一种构造数据类型,它用于描述具有多个数据成员且每个数据成员具有不同数据类型的数据对象。例如描写一个
3、学生的基本情况,涉及到学号、姓名、性别、两门课的成绩,分别用intnum;charname[8];charsex;floatscore[2]表示,要描写这样一个由不同数据类型构成的对象,需要定义一个结构体类型。1.结构体类型定义结构体类型的定义格式为:181第6章结构体与共用体struct结构体类型名{类型数据类型成员名1;类型数据类型成员名2;类型数据类型成员名3;………………类型数据类型成员名n;};例如要描写上述学生的基本情况,需定义的结构体类型为:structstudent{intnum;char
4、name[8];charsex;floatscore[2];};注意(1)此定义仅仅是结构体类型的定义,它说明了结构体类型的构成情况,C语言并没有为之分配存储空间。(2)结构体中的每个数据成员称为分量或域,它们并不是变量,在实际应用中还需定义结构变量。2.结构体变量的定义定义了结构体类型以后,可以进行结构体变量的定义,其形式为:struct结构体类型名结构体变量表;结构体的变量也可以是数组或指针。定义结构体变量时,C语言会为每个变量分配存储空间。结构体变量的定义的方法可以与结构体类型同时定义或分开定义,分
5、开定义是指先定义结构体类型,再定义结构体变量。定义结构体时,我们实际上声明了一种复杂的数据类型,并未生成任何变量。声明该变量之前,不存在任何此种类型的变量。为了声明student类型的变量stu,可写成如下形式:structstudentstu;这样就定义了structstudent类型的结构体变量stu。student描述结构体类型,称为结构体类型。stu是结构体类型的实例或对象,称为结构体类型变量或结构体变量。定义了结构体变量(stu)之后,C编译程序自动为结构体变量的所有成员分配足够的内存,如图6.
6、1所示。numnamesexscore[0]score[1]4Byte8Byte1B8Byte8Byte低地址高地址181第6章结构体与共用体图6.1在VisualC++环境下结构体变量stu占用内存情况定义结构体的同时可定义一个或多个结构体变量。例如:structstudent{intnum;charname[8];charsex;floatscore[2];}stu1,stu2,stu3;定义结构体类型student,同时声明该类型变量stu1,stu2,stu3。每个结构体变量都包含各自的结构体成员
7、的副本。例如,stu1中的sex成员和stu2中的sex成员是彼此独立的,改变stu1中的sex,不会影响stu2中的sex。如在定义结构体类型与结构体变量时,结构体标记还可省略。例如:struct{intnum;charname[8];charsex;floatscore[2];};这里直接按结构体类型说明了结构体变量。3.结构体变量对结构体成员的引用通过圆点(.)操作符可访问结构体中的成员。访问一个结构体成员的一般形式为:结构体变量名.成员名;它表示结构体变量对具体成员的引用,以下代码把2001赋给结
8、构体变量stu1的成员num:stu1.num=2001;在屏幕上显示stu的成员num所含的学号值,应写为:printf("%d",stu.num);同理,从键盘读入的语句是:scanf(“%d”,&stu.num);4.结构体变量的赋值(1)结构体变量可在声明时直接进行初始化。初始化数据应放在大括号中,并根据成员变量的声明次序排列,同时数据之间的类型应一致。例如:structstudentstu1={2001,"张华",’
此文档下载收益归作者所有