结构体共用体枚举型.ppt
《结构体共用体枚举型.ppt》由会员分享,可在线阅读,更多相关《结构体共用体枚举型.ppt(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第1010章章 结构体与共用体结构体与共用体C C 语言程序设计语言程序设计1第第10章章 结构体、共用体与枚举型结构体、共用体与枚举型10.1 10.1 10.1 10.1 结构体结构体结构体结构体10.2 10.2 10.2 10.2 共用体共用体共用体共用体10.3 10.3 10.3 10.3 枚举类型与类型命名枚举类型与类型命名枚举类型与类型命名枚举类型与类型命名2023/2/222 一一一一个个个个学学学学生生生生的的的的信信信信息息息息有有有有学学学学号号号号、姓姓姓姓名名名名、性性性性别别别别、年年年年龄龄龄龄、住住住住址址址址、成绩成绩成绩成绩等。等。等。等。一一一一本本本
2、本图图图图书书书书的的的的信信信信息息息息有有有有分分分分类类类类编编编编号号号号、书书书书名名名名、作作作作者者者者、出出出出版版版版社社社社、出版日期出版日期出版日期出版日期、价格价格价格价格、库存量库存量库存量库存量等。等。等。等。如何描述这些类型不同的相关数据?如何描述这些类型不同的相关数据?如何描述这些类型不同的相关数据?如何描述这些类型不同的相关数据?10.1 结构体结构体10.1.1 10.1.1 结构体与结构体类型的定义结构体与结构体类型的定义结构体与结构体类型的定义结构体与结构体类型的定义信息管理信息管理信息管理信息管理结构体结构体结构体结构体一种构造类型数据一种构造类型数据
3、 结构体结构体由若干不同类型的数据项组成,由若干不同类型的数据项组成,构成结构体的各个数据项称为构成结构体的各个数据项称为结构体成员结构体成员。2023/2/223 struct struct 结结结结构体名构体名构体名构体名 数据数据数据数据类类类类型型型型1 1 成成成成员员员员名名名名1;1;数据数据数据数据类类类类型型型型2 2 成成成成员员员员名名名名2;2;数据数据数据数据类类类类型型型型n n 成成成成员员员员名名名名n;n;10.1 结构体结构体10.1.1 10.1.1 结构体与结构体类型的定义结构体与结构体类型的定义结构体与结构体类型的定义结构体与结构体类型的定义结构体类型
4、定义的一般形式:结构体类型定义的一般形式:结构体类型定义的一般形式:结构体类型定义的一般形式:lstructstruct为关键字;为关键字;l结结构构体体名名是是用用户户定定义义的的类型标识类型标识。l 中中是是组组成成该该结结构构体体的的成成员员。成成员员的的数数据据类类型型可可以以是是C语语言言所所允允许的任何数据类型许的任何数据类型。2023/2/224例如图书类型的定义:例如图书类型的定义:例如图书类型的定义:例如图书类型的定义:struct bookcardstruct bookcard char num10;/*char num10;/*图书图书图书图书分类编号是字符数组类型分类编
5、号是字符数组类型分类编号是字符数组类型分类编号是字符数组类型*/*/char name30;/*char name30;/*书名是字符数组类型书名是字符数组类型书名是字符数组类型书名是字符数组类型*/*/char author30;/*char author30;/*作者是字符数组类型作者是字符数组类型作者是字符数组类型作者是字符数组类型*/*/char publisher60;/*char publisher60;/*出版社是字符数组类型出版社是字符数组类型出版社是字符数组类型出版社是字符数组类型*/*/float price;/*float price;/*价格是单精度实型价格是单精度实型
6、价格是单精度实型价格是单精度实型*/*/int n;/*int n;/*库存量是整型库存量是整型库存量是整型库存量是整型*/*/;例如学生类型的定义:例如学生类型的定义:struct student char num8;/*学号学号*/char name30;/*姓名姓名*/char sex;/*性别性别*/int age;/*年龄年龄*/char addr60;/*住址住址*/int score6;/*成绩成绩*/;10.1 结构体结构体10.1.1 10.1.1 结构体与结构体类型的定义结构体与结构体类型的定义结构体与结构体类型的定义结构体与结构体类型的定义2023/2/22510.1 结
7、构体结构体10.1.2 10.1.2 结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化1.1.结构体类型变量的定义结构体类型变量的定义结构体类型变量的定义结构体类型变量的定义 l l利用已利用已利用已利用已定义的结构体类型名定义变量定义的结构体类型名定义变量定义的结构体类型名定义变量定义的结构体类型名定义变量 struct struct 结构体名结构体名结构体名结构体名 变量名表;变量名表;变量名表;变量名表;例如:例如:例如:例如:struct bookcard struct bookcard book1100;book1100;struct
8、student struct student s30,t1,t2;s30,t1,t2;按按照照结结构构体体类类型型的的组组成成,系系统统为为定定义义的的结结构构体体变变量量分分配配内内存存单单元元。结结构构体体变变量量的的各各个个成成员员在在内内存存中中占占用用连连续续存存储储区区域域,结结构构体体变变量量所所占占内内存存大大大大小小小小为为为为结构体中结构体中每个成员每个成员所占用内存的所占用内存的长度之和长度之和。struct studentstruct studentnumnum8 8个字节个字节个字节个字节namename3030个字节个字节个字节个字节sexsex1 1个字节个字节个
9、字节个字节ageage2 2个字节个字节个字节个字节addraddr6060个字节个字节个字节个字节scorescore1212个字节个字节个字节个字节2023/2/22610.1 结构体结构体结构体类型与变量的说明结构体类型与变量的说明结构体类型与变量的说明结构体类型与变量的说明l l类型类型类型类型与与与与变量变量变量变量是不同的概念。是不同的概念。是不同的概念。是不同的概念。应先定义一个应先定义一个应先定义一个应先定义一个结构体类型结构体类型结构体类型结构体类型,而后再定义,而后再定义,而后再定义,而后再定义结构体变量结构体变量结构体变量结构体变量。系统对系统对系统对系统对类型类型类型类
10、型不分配空间,仅对不分配空间,仅对不分配空间,仅对不分配空间,仅对变量变量变量变量分配空间。分配空间。分配空间。分配空间。只能对只能对只能对只能对变量变量变量变量赋值、存取或运算,而不能对一个赋值、存取或运算,而不能对一个赋值、存取或运算,而不能对一个赋值、存取或运算,而不能对一个类型类型类型类型赋值、存取或运算。赋值、存取或运算。赋值、存取或运算。赋值、存取或运算。l l成员成员成员成员也可以是也可以是也可以是也可以是结构变量结构变量结构变量结构变量。l l对结构中的对结构中的对结构中的对结构中的成员成员成员成员,可以单独使用,它的作用与,可以单独使用,它的作用与,可以单独使用,它的作用与,
11、可以单独使用,它的作用与地位相当于地位相当于地位相当于地位相当于普通变量普通变量普通变量普通变量。l l成员名成员名成员名成员名可与程序中的变量名相同,也可与可与程序中的变量名相同,也可与可与程序中的变量名相同,也可与可与程序中的变量名相同,也可与不同不同不同不同结构体类型的成员名相同,结构体类型的成员名相同,结构体类型的成员名相同,结构体类型的成员名相同,二者代表不同的对二者代表不同的对二者代表不同的对二者代表不同的对象。象。象。象。numnum8 8个字节个字节个字节个字节namename3030个字节个字节个字节个字节sexsex1 1个字节个字节个字节个字节birthdaybirthd
12、ayyearyear2 2个字节个字节个字节个字节monthmonth 2 2个字节个字节个字节个字节dayday2 2个字节个字节个字节个字节addraddr6060个字节个字节个字节个字节scorescore1212个字节个字节个字节个字节 struct date int year,month,day;struct student char num8;char name30;char sex;struct datestruct date birthday;/*成员为结构体类型成员为结构体类型*/char addr60;int score6;2023/2/22710.1 结构体结构体10.1
13、.2 10.1.2 结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化1.1.结构体类型变量的定义结构体类型变量的定义结构体类型变量的定义结构体类型变量的定义 l l在定义结构体类型的同时定义变量在定义结构体类型的同时定义变量在定义结构体类型的同时定义变量在定义结构体类型的同时定义变量例如:例如:例如:例如:struct student struct student char num8,name20,sex;char num8,name20,sex;int age;int age;float score;float score;st30;st30;
14、struct struct 结构体名结构体名结构体名结构体名 成员定义表;成员定义表;成员定义表;成员定义表;变量名表;变量名表;变量名表;变量名表;2023/2/22810.1 结构体结构体10.1.2 10.1.2 结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化1.1.结构体类型变量的定义结构体类型变量的定义结构体类型变量的定义结构体类型变量的定义 l l直接定义结构体类型变量直接定义结构体类型变量直接定义结构体类型变量直接定义结构体类型变量 例如:例如:例如:例如:struct struct char num8,name20,sex;ch
15、ar num8,name20,sex;int age;int age;float score;float score;st30st30,a,b,c,a,b,c;struct struct 成员定义表;成员定义表;成员定义表;成员定义表;变量名表;变量名表;变量名表;变量名表;2023/2/22910.1 结构体结构体10.1.2 10.1.2 结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化2.2.结构体变量的初始化结构体变量的初始化结构体变量的初始化结构体变量的初始化 【例例例例1010.1.1】结构体变量的初始化。结构体变量的初始化。结构体变
16、量的初始化。结构体变量的初始化。struct date struct date int year,month,day;int year,month,day;struct student struct student char num8,name20,sex;char num8,name20,sex;struct date birthday;struct date birthday;float score;float score;a=9606011,Li ming,M,1977,12,9,83,a=9606011,Li ming,M,1977,12,9,83,b=9608025,Zhang li
17、ming,F,1978,5,10,87,c;b=9608025,Zhang liming,F,1978,5,10,87,c;如果初值个数少于结构体成员个数,如果初值个数少于结构体成员个数,则将无初值对应的成员赋以则将无初值对应的成员赋以0值。值。如果初值个数多于结构体成员个数,如果初值个数多于结构体成员个数,则编译出错。则编译出错。2023/2/221010.1 结构体结构体10.1.2 10.1.2 结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化2.2.结构体变量的初始化结构体变量的初始化结构体变量的初始化结构体变量的初始化 【例【例【例【例
18、10.210.2】结结结结构体数构体数构体数构体数组组组组的初始化。的初始化。的初始化。的初始化。struct s struct s char num8,name20,sex;char num8,name20,sex;float score;float score;stu3=9606011,Li ming,M,87.5,stu3=9606011,Li ming,M,87.5,9606012,Zhang jiangguo,M,79,9606012,Zhang jiangguo,M,79,9606013,Wang ping,F,90;9606013,Wang ping,F,90;元素的个数可以省略
19、,根据赋初值时元素的个数可以省略,根据赋初值时结构体常量的个数确定数组元素的个数结构体常量的个数确定数组元素的个数 2023/2/221110.1 结构体结构体10.1.2 10.1.2 结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化3.3.结构体变量的运算结构体变量的运算结构体变量的运算结构体变量的运算 l l用用用用sizeofsizeof运算符计算结构体变量所占内存空间运算符计算结构体变量所占内存空间运算符计算结构体变量所占内存空间运算符计算结构体变量所占内存空间 struct datestruct date intint year,mo
20、nth,day;year,month,day;struct studentstruct student charchar num8,name20,sex;num8,name20,sex;struct datestruct date birthday;birthday;floatfloat score;score;a a;sizeof(sizeof(a a)的结果为的结果为的结果为的结果为8+20+1+6+4=398+20+1+6+4=39 sizeof(sizeof(struct studentstruct student)的结果为的结果为的结果为的结果为3939 2023/2/221210.
21、1 结构体结构体10.1.2 10.1.2 结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化3.3.结构体变量的运算结构体变量的运算结构体变量的运算结构体变量的运算 l l同类型结构体变量之间的同类型结构体变量之间的同类型结构体变量之间的同类型结构体变量之间的赋值运算赋值运算赋值运算赋值运算结构体变量之间进行赋值时,系统将按成员一一对应赋值。结构体变量之间进行赋值时,系统将按成员一一对应赋值。结构体变量之间进行赋值时,系统将按成员一一对应赋值。结构体变量之间进行赋值时,系统将按成员一一对应赋值。struct datestruct date int
22、 year,month,day;int year,month,day;struct studentstruct student char num8,name20,sex;char num8,name20,sex;struct date birthday;struct date birthday;float score;float score;a=9606011,Li ming,M,1977,12,9,83,b,c;a=9606011,Li ming,M,1977,12,9,83,b,c;c c=a;a;2023/2/221310.1 结构体结构体10.1.2 10.1.2 结构体变量的定义与初
23、始化结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化3.3.结构体变量的运算结构体变量的运算结构体变量的运算结构体变量的运算 l l对结构体变量进行对结构体变量进行对结构体变量进行对结构体变量进行取址运算取址运算取址运算取址运算 struct datestruct date int year,month,day;int year,month,day;struct studentstruct student char num8,name20,sex;char num8,name20,sex;struct date birthday;struct date birthday
24、;float score;float score;a;a;对对对对结结结结构构构构体体体体变变变变量量量量a a进进进进行行行行&a a 运运运运算算算算,可可可可以以以以得得得得到到到到a a a a的的的的首首首首地址,它是结构体类型指针。地址,它是结构体类型指针。地址,它是结构体类型指针。地址,它是结构体类型指针。2023/2/221410.1 结构体结构体10.1.2 10.1.2 结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化结构体变量的定义与初始化4.4.结构体变量成员的引用结构体变量成员的引用结构体变量成员的引用结构体变量成员的引用 结构体变量成员引用的
25、一般形式:结构体变量成员引用的一般形式:结构体变量成员引用的一般形式:结构体变量成员引用的一般形式:结构体变量名结构体变量名结构体变量名结构体变量名.成员名成员名成员名成员名 结结结结构构构构体体体体变变变变量量量量a a的的的的各各各各成成成成员员员员可可可可分分分分别别别别表表表表示示示示为为为为a a.numnum、a a.namename、a a.sexsex、a a.birthdaybirthday、a a.scorescore struct datestruct date int year,month,day;int year,month,day;struct student st
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 共用 枚举
限制150内