欢迎来到天天文库
浏览记录
ID:50320306
大小:672.50 KB
页数:116页
时间:2020-03-08
《C语言程序设计 教学课件 作者 孟庆昌 陈海鹏 马鸣远 刘振英 第9章 结构与联合.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章结构与联合结构类型及其变量的定义9.1结构成员的引用9.2结构变量的初始化9.3结构数组9.4联合9.7引用自身的结构和链表9.6应用举例9.8结构和指针9.5C语言提供了一种聚合数据类型,结构(或结构体,structure),它是若干相关数据项的集合,其类型可以不同。结构中所含成员的数量和大小必须是确定的,即结构不能随机改变大小。组成一个结构的诸成员的类型可以不同,即结构是异质的。联合(或共用体,union)类型是一种“可变身份”的数据类型,可在不同的时候在同一存储单元里存放不同类型的数据。其定义形式和引用方法与结构相似。9.
2、1.1结构类型的定义结构类型定义的一般形式是:struct结构名{成员表;};9.1结构类型及其变量的定义例如,表示一位学生简要资料的结构类型可定义如下:structstudent{charname[20];longintorder,id;shortintage;charnativity[10],address[100];intscore[10];};定义结构类型时应注意以下几点。(1)结构成员可以是任何基本数据类型的变量,这些成员的类型可以相同或不同。(2)结构成员也可以是数组、指针类型的变量。例如:structclist{intc
3、ount;char*first;char*last;};(3)结构类型可以嵌套定义,即允许一个结构中的一个或多个成员是其他结构类型的变量。structid_card{charname[30];charsex;charnationality[20];structdate{intyear,month,day;}birthday;char*p_addr;structdatesigned_date;longintnumber;char*office;};也可以采用另一种形式:把各个结构类型单独定义,而在结构成员表中仅出现相应结构类型的变量。s
4、tructdate{intyear,month,day;};structid_card{charname[30];charsex;charnationality[20];structdatebirthday;char*p_addr;structdatesigned_date;longintnumber;char*office;};(4)结构类型定义不允许递归,即:一个结构类型的成员中不能含有类型为本结构的变量。例如下面的说明是非法的:structwrong{charname[5];intcount;structwronga;struc
5、twrongb;};(5)在C语言中不支持动态结构类型。(6)在同一结构内各成员的名称不能相同。为了使用结构变量,必须先定义结构变量。定义结构变量常用的方法有以下三种。(1)先定义结构类型,再定义结构变量。例如,structcoord{floatx;floaty;};9.1.2结构变量的定义structcoordfirst,second;注意,关键字struct和结构名必须同时出现,缺一不可。(2)在定义结构类型的同时定义结构变量。例如:structcoord{floatx,y;}first,second;(3)利用无名结构类型定义变
6、量。其一般形式是:struct{成员表;}变量名表;例如:struct{floatx,y;}first,second;9.1.3结构变量的内部表示定义结构类型只是声明一种数据类型的“样板”。这种样板是抽象的,还没有实体,不占用内存空间,不能在程序中对结构类型直接进行赋值、存取等操作。而定义结构变量后,在编译时才为它按照“样板”的要求分配存储空间。结构变量存储单元的分配是按照其类型的样板配置的,通常是依据各个成员在结构中出现的先后次序来分配空间。如定义了结构变量:structstudentZhangsan;其内存空间配置示意如图9-1所
7、示。结构变量可以嵌套。例如,structrectangle{structcoordtopleft;/*左上角坐标*/structcoordbottomrt;/*右下角坐标*/}mybox;图9-1结构变量Zhangsan的存储分配示意图9.2.1引用结构成员的一般方式引用结构成员的一般方式是:结构变量名.成员名例如,first.x表示结构变量first的成员x;first.y表示结构变量first的成员y。9.2结构成员的引用引用结构成员的方式是“由整体到局部”,即首先指明是哪个结构变量,然后通过成员关系运算符“.”找到其中指定的成员
8、。结构变量中成员可以像相同类型的简单变量那样进行相应的运算。structcoord{floatx,y;};structcoordfirst;first.x=1.5;first.y=3.8;如果要存取最内层结构变量的成员,
此文档下载收益归作者所有