结构体、共用体和枚举类型

上传人:ji****72 文档编号:48600618 上传时间:2018-07-17 格式:PPT 页数:61 大小:429KB
返回 下载 相关 举报
结构体、共用体和枚举类型_第1页
第1页 / 共61页
结构体、共用体和枚举类型_第2页
第2页 / 共61页
结构体、共用体和枚举类型_第3页
第3页 / 共61页
结构体、共用体和枚举类型_第4页
第4页 / 共61页
结构体、共用体和枚举类型_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《结构体、共用体和枚举类型》由会员分享,可在线阅读,更多相关《结构体、共用体和枚举类型(61页珍藏版)》请在金锄头文库上搜索。

1、南京航空航天大学信息学院计算机基础教研室 制作(版权所有)第10章 结构体、共用体和枚举类型第10章本章要点v了解结构v了解关于结构的各种操作v理解怎样使用结构操作数据v理解结构和函数之间的关系、掌握结构作 为参数传递与返回结构的函数方法v理解结构中数组的用法v理解怎样创建结构数组v了解共用体的特点v了解枚举类型第10章问题的提出学号 姓名 年龄 性别 成绩1 成绩2 平均成绩1 AA 19 M 80 90 902 BB 18 F 78 70 733 CC 17 M 81 75 794 DD 18 F 80 60 755 EE 19 M 76 83 83每行的数据类型不相同,如何表示此二维数据

2、? 如何交换两行值? 能否将一行看成一个整体?定义一种类型,把不同的数据作为一个整体来处理结构体第10章数据类型数组 - 有相同类型的数据集合 结构体- 不同类型的数据集合构造数据类型: 由简单数据类型(int、float、 char)组合而 成的(有机整体)数据类型。基本类型 : 整型 、实型 、字符型.第10章主要内容v结构体类型的定义v结构体类型的变量和结构体类型数组v共用体v枚举类型第10章 结构体类型的定义定义了一种新的数据类型 struct 结构体名或结构体名struct 结构体名 类型标识符 成员名1类型标识符 成员名2.类型标识符 成员名n;可为简单类型 也可为构造类型关键字不

3、能少成员 列表第10章例v以学生档案为例,假设包括如下数据项学号(num):整型姓名(name):字符串性别(sex):字符型出生日期(birthday):date结构体四门课成绩(sc):一维实型数组第10章例依此格式定义上例 struct date int year ,month ,day; struct studentint num;char name12;char sex;date birthday;float sc4;如struct date 没事先说明可 写成: struct student int num ;char name12;char sex;structint year;

4、int month;int day;birthday;float sc4; ;第10章例 例1:一组相关变量 定义结构体类型新数据类型结构体成员int month ;int day ;int year ;struct date int year ; int month ;int day ;char name30; struct wage float salary ; char name30;float salary ;不同数据类型的成员例2:一组相关变量 定义结构体类型第10章说明(1) 结构体类型是一种构造数据类型,它与int, char,float等系统定义的基本数据类型具有同等地位 ,是

5、由用户自行定义的。(2) 结构体类型不分配任何存储空间。 相应结构体类型的变量、数组及动态开辟的存储单元占存储空间。构造的数据类型可以用来定义变量第10章结构体类型的变量和数组的定义方法先定义结构体类型,再单独进行定义在定义类型的同时定义结构体变量在定义一个无名结构体类型的同时,直接进行定义第10章方法一先声明结构体类型再定义结构体变量先声明结构体类型再定义结构体变量 struct 结构体名 成员列表; struct 结构体名 变量名列表; 或 结构体名 变量名列表第10章例struct student int num; char name12;char sex;date birthday ;

6、 float sc4; ; struct student std,pers3; 或 student std,pers3;std:结构体变量 pers:结构体数组, (三个元素均为结构体类型变量)第10章变量std的结构num name sex year month day sc0 sc1 sc2 sc3birthday 注意:各成员按顺序排列第10章方法二在声明类型的同时定义结构体变量在声明类型的同时定义结构体变量 struct student int num; char name12;char sex;struct date birthday ; float sc4; std,pers3;s

7、truct 结构体名成员列表 变量名列表;第10章struct int num; char name12;char sex;date birthday ; float sc4; std,pers3;方法三直接定义结构体变量直接定义结构体变量struct 成员列表 变量名列表;无结构体名第10章 结构体类型的几点说明 结构体中的成员可以象变量一样使用。 成员名可以与程序中的变量同名 结构体中的成员也可为结构体变量 类型与变量是完全不同的概念。先定义结构类型,再定义变量为该类型 。类型:不可赋值、存贮、运算;系统不分配空间。变量:可赋值、存贮、运算;系统要分配空间。第10章结构体类型变量初值str

8、uct student int num; char name12;char sex;date birthday ; float sc4; std=10101,“LiMing“,M,1962,5,10,88,76,8 5.5,90;注意: 一一对应赋初值, 不允许跳跃赋值。 可只给前面的成员赋值第10章给结构体数组赋初值v数组中的每个元素是一个结构体类型的数据 ,因此将此成员的值依次放在一对花括号中例: struct bookcardchar num5;float money; bk3=“NO.1“,35.5,“NO.2“,25.0,“NO.3“,66.7;第10章 给二维结构体数组赋初值例st

9、ruct char ch;int i;float x;arr23=a,1,3e10,a,2,4e10, a,3,5e10,b,1,6e5,b,2,7e5, b,3,8e5;第10章 结构体类型变量及其成员的引用v两种方式F引用成员M结构体变量名.成员名F引用整体 struct t int i, j;char name10; ; t t1=12, 48, “LiLi“, t2; t2=t1; 其中“t2=t1;”等同于: t2.i=t1.i; t2.j=t1.j; strcpy(t2.name, t1.name);结构体变量的成员可以像普 通变量一样进行各种运算, 如stud1.num+、 st

10、ud1.sex=stud2.sex;结构体变量不能 进行整体输入输出 第10章优先级: 1 结合性: 左 例:有定义:struct date 对变量today作成员选择运算: int year ; today. year int型 int month ; today. month int型 int day; today. day int型 today ;成员选择运算的结果是得到了该结构变量的某个成员,其数据类型是定义该结构体类型时成员列表中定 义的类型。成员运算符“.”第10章例struct data int month;int day;int year; ; struct student c

11、har name20;char sex;data birthday;int sc4; std,arr5;(1)引用sexstd.sex(通过结构体变量引用 )引用arr0中的sex:arr0.sex不能写作 arr.sex第10章例struct data int month;int day;int year; ; struct student char name20;char sex;data birthday;int sc4; std,arr5 ;(2)引用sc中的元素,如sc1std.sc1(通过结构体变量引用)不能写成std.scC+语言不允许对数组 整体访问(字符串除外 )第10章例s

12、truct data int month;int day;int year; ; struct student char name20;char sex;data birthday;int sc4; std,arr5 ;(3)成员为字符串如name std.name(通过结构体变量引用 )arr0.name第10章例struct data int month;int day;int year; ; struct student char name20;char sex;data birthday;int sc4; std,arr5 ;(4)内嵌结构体成员的引用逐层使用成员名定位引用std中的出

13、生年份std.birthday.year只可引用最 低一级成员第10章例std.name是字符串,可以对它进行对任何 字符串允许的操作,包括输入输出。对结构体变量中的每个成员,可对它进行同类 变量所允许的任何操作。对结构体变量中的成员进行操作第10章例struct data int month;int day;int year; ; struct student char name20;char sex;data birthday;int sc4; std,pers5 ;(1)对name的操作cinstd.name;或cin.getline(std.name,80);(2)对sex的操作cin

14、std.sex;for(i=0;ipersi.sex;std.sex= M; 注意:不能写成std.name=“Li Ming“第10章struct data int month;int day;int year; ; struct student char name20;char sex;data birthday;int sc4; std,pers5;例(3)对birthday中year的操作cinstd.birthday.year;std.birthday.year=1962;第10章结构体数组struct student int num; char name20; char sex; int age; float score; char addr30; stud4 = 23901, “Zang Li“, F, 19, 78.5, “35 Shangha

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号