第7章结构体、共同体和枚举型.ppt

上传人:本田雅阁 文档编号:2094517 上传时间:2019-02-13 格式:PPT 页数:20 大小:299.01KB
返回 下载 相关 举报
第7章结构体、共同体和枚举型.ppt_第1页
第1页 / 共20页
第7章结构体、共同体和枚举型.ppt_第2页
第2页 / 共20页
第7章结构体、共同体和枚举型.ppt_第3页
第3页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第7章结构体、共同体和枚举型.ppt》由会员分享,可在线阅读,更多相关《第7章结构体、共同体和枚举型.ppt(20页珍藏版)》请在三一文库上搜索。

1、第7章 结构体、共同体和枚举型,主讲:李娟,概 述,有时需要将不同类型的数据组合成一个有机的整体 如:一个学生的信息: 学号(num) 姓名(name) 性别(sex) 年龄(age) 成绩(score) 家庭地址(addr),num name sex age score addr,结构体:若干个数据类型不同的(也可以相同)的数据项的一个组合,结构体是一种数据结构,它需要用户根据自己的需要、按某种规则定义,即定义结构体类型,7.1 结构体的定义及使用,7.1.1、结构类型定义的一般形式是: struct 结构体名 数据类型 成员名1; 数据类型 成员名2; 数据类型 成员名n; ;,如:str

2、uct student long num; char name 20; char sex; int age; float score; char addr 30; ;,struct是关键字 ,表示是结构体类型; student是结构体类型名,结构体中的各个成员 形式:类型 成员名,7.1.2 定义结构体变量的方法,如: struct student long num; char name 20; char sex; int age; float score; char addr 30; ; struct student student1,student2;,1先声明结构体类型,再定义变量,一般

3、形式: struct 结构体类型名 成员表; ; struct 结构体类型名 变量名表;,注意:定义结构体变量后,系统为变量分配内存单元,student1和student2各占68个字节,是各成员所占内存空间的总和。,7.1.2 定义结构体变量的方法,如: struct student long num; char name 20; char sex; int age; float score; char addr 30; ; student1,student2;,2在声明结构类型的同时定义结构体变量,一般形式: struct 结构体名 成员列表; 变量名表;,7.1.2 定义结构体变量的方法

4、,如: struct long num; char name 20; char sex; int age; float score; char addr 30; ; student1,student2;,3利用无名结构类型定义变量,一般形式: struct 成员表; 变量名表;,7.1.2 定义结构体变量的方法,一、类型与变量的区别: 类型是先定义结构体类型,然后定义变量。 类型不分配空间,变量分配空间 二、结构体的嵌套定义 结构体的成员又可以是结构体变量,注意:,如:struct date int month; int day; int year; ;,struct student int

5、num; char name20; char sex; int age; float score; struct date birthday; char addr20; stu1;,7.1.2 定义结构体变量的方法,三、成员名与变量名可以相同,注意:,7.1.3 结构体变量的使用,结构体成员的引用形式:结构体变量名成员名,成员运算符,运算级别最高,规则: 、不能将结构体变量作为一个整体进行赋值、输出,只能对结构体中的各个成员分别进行赋值输入输出操作;但允许将一个结构体变量直接赋给另一个具有相同结构的结构体变量,如:student1.num=10000; student1.age=25; stu

6、dent2=student1;,7.1.3 结构体变量的使用,规则: 、如果是嵌套定义,用若干个成员运算符,一级一级地找到最低的一级成员。,如:student1.num; student1.name; student1.birthday.day; student1.birthday.month; student1.birthday.year;,7.1.3 结构体变量的使用,规则: 、结构体成员变量可以像普通变量一样使用、运算,如:student2.score=student1.score; sum= student2.score+student1.score; student1.age+; +

7、student1.age;,、可以引用成员的地址,也可以引用结构体变量的地址 .,如:scanf(“%d”, 输入student1.age的值,7.1.4 结构体变量的初始化,和其它变量一样,在定义结构体变量时赋初值,如: struct student long num; char name 20; char sex; int age; float score; char addr 30; who=991105,“Zhanghua”,M,20,87.5,”zhengzhou”;,一般形式: struct 结构体名 成员列表; 变量名=初始数据表;,等价于:who.num= 991105;str

8、cpy(who.name,“Zhanghua”); Who.sex=M;who.score=87.5;strcpy(who.addr,”zhengzhou”);,7.1.5 结构体数组,1、结构体数组的定义方法,结构体数组:数组中每个元素都是一个结构体类型的数据,与定义结构体变量类似,只需说明其为数组即可,struct student int num; char name20; char sex; int age; float score; struct date birthday; char addr20; struct student stu5;,struct student int nu

9、m; char name20; char sex; int age; float score; struct date birthday; char addr20; stu5;,struct int num; char name20; char sex; int age; float score; struct date birthday; char addr20; stu5;,7.1.5 结构体数组,形式: 在定义数组的后面加上:初值表;,如:struct student int num; char name20; char sex; int age; float score; char a

10、ddr20; ; struct student stu3=10101,”lijing”,M,19,89,” beijing” , 10102 ,”liujing”,F,21, 96,”tianjing”, 10103 , ”linlin ” , M , 18, 89 , ”zhengzhou”;,7.1.5 结构体数组,结构体数组在内存中连续存放,stu,stu+1,stu1.num,stu1.name,结构体数组在内存中的表示:,7.2 共同体的定义与使用,7.2.1 共用体的概念 一、概念 不同数据类型的数据可以使用共同的存储区域,这种数据类型称为共用体,又称联合体。共用体在定义、说明和使

11、用形式上与结构体相似。两者本质上的不同仅在于使用内存的方式上。 共用体变量所占空间总是按其成员中数据长度最大的成员分配内存空间,7.2.1 共同体的概念,二、定义 union 共用体名 成员列表; ;,例如: union uarea char c_data; short s_data; long l_data; ;,7.2.2 定义共同体类型变量,方法一 union 共用体名 成员列表; 变量表列; 例如: union uarea char c_data; short s_data; long l_data; a,b,c;,方法二 union 共用体名 成员列表; ; 共用体名 变量表列; 例

12、如: union uarea char c_data; short s_data; long l_data; uare a a,b,c;,7.2.3 共同体变量的使用,一、共用体变量成员的引用 共用体变量名.成员 例如: a.s_data 引用共用体变量中的整型变量s_data a.c_data 引用共用体变量中的字符变量c_data 二、使用共用体变量的注意事项 (1) 使用共用体变量的目的是希望用同一个内存段存放几个不同类型的数据。但请注意:在每一瞬时只能存放其中一个,而不是同时存放几个。 (2) 能够访问的是共用体变量中最后一次被赋值的成员,在对一个新的成员赋值后原有的成员就失去作用。如有以下赋值语句: a. s_data =5; a. c_data=m; a. l_data =1500;/在完成以上三个赋值运算后,a. l_data是有效的,而a. s_data和a.c_data已经无意义了。 (3) 共用体变量的地址和它的各成员的地址都是同一地址。 (4) 不能对共用体变量赋值;不能企图引用变量名来得到一个值;不能在定义共用体变量时对它初始化;不能用共用体变量名作为函数参数。,作 业,160:一、1、2,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1