C语言程序设计 第9章

上传人:油条 文档编号:26769111 上传时间:2017-12-31 格式:PPT 页数:86 大小:707KB
返回 下载 相关 举报
C语言程序设计 第9章_第1页
第1页 / 共86页
C语言程序设计 第9章_第2页
第2页 / 共86页
C语言程序设计 第9章_第3页
第3页 / 共86页
C语言程序设计 第9章_第4页
第4页 / 共86页
C语言程序设计 第9章_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《C语言程序设计 第9章》由会员分享,可在线阅读,更多相关《C语言程序设计 第9章(86页珍藏版)》请在金锄头文库上搜索。

1、1,第9章 结构体与共用体,西南大学 计算机系,C 语言程序设计,2017/12/31,2,第9章 结构体与共用体,9.1 结构体9.2 共用体9.3 枚举类型与类型命名,2017/12/31,3,一个学生的信息有学号、姓名、性别、年龄、住址、成绩等。 一本图书的信息有分类编号、书名、作者、出版社、出版日期、价格、库存量等。 如何描述这些类型不同的相关数据?,9.1 结构体,9.1.1 结构体与结构体类型的定义,?,信息管理,结构体一种构造类型数据 结构体由若干不同类型的数据项组成, 构成结构体的各个数据项称为结构体成员。,2017/12/31,4,struct 结构体名 数据类型1 成员名1

2、; 数据类型2 成员名2; 数据类型n 成员名n; ;,9.1 结构体,9.1.1 结构体与结构体类型的定义,结构体类型定义的一般形式:,struct为关键字;结构体名是用户定义的类型标识。 中是组成该结构体的成员。成员的数据类型可以是C语言所允许的任何数据类型。,2017/12/31,5,例如图书类型的定义: struct bookcard char num10; /*图书分类编号是字符数组类型*/ char name30; /*书名是字符数组类型*/ char author30; /*作者是字符数组类型*/ char publisher60; /*出版社是字符数组类型*/ float pr

3、ice; /*价格是单精度实型*/ int n; /*库存量是整型*/ ;,例如学生类型的定义:struct student char num8; /* 学号是字符数组类型 */ char name30; /* 姓名是字符数组类型 */ char sex; /* 性别是字符型 */ int age; /* 年龄是整型 */ char addr60; /* 住址是字符数组类型 */ int score6; /* 成绩是整型数组类型 */ ;,9.1 结构体,9.1.1 结构体与结构体类型的定义,2017/12/31,6,9.1 结构体,9.1.2 结构体变量的定义与初始化,1. 结构体类型变量的

4、定义,利用已定义的结构体类型名定义变量 struct 结构体名 变量名表;例如: struct bookcard book1100; struct student s30, t1, t2;,按照结构体类型的组成,系统为定义的结构体变量分配内存单元。结构体变量的各个成员在内存中占用连续存储区域,结构体变量所占内存大小为结构体中每个成员所占用内存的长度之和。,2017/12/31,7,9.1 结构体,结构体类型与变量的说明,类型与变量是不同的概念。应先定义一个结构体类型,而后再定义结构体变量。系统对类型不分配空间,仅对变量分配空间。只能对变量赋值、存取或运算,而不能对一个类型赋值、存取或运算。,成

5、员也可以是结构变量。,对结构中的成员,可以单独使用,它的作用与地位相当于普通变量。成员名可与程序中的变量名相同时,也可与不同结构体类型的成员名相同,二者代表不同的对象。,struct date int year,month,day; struct student char num8; char name30; char sex; struct date birthday; /* 成员为结构体类型 */ char addr60; int score6; ;,2017/12/31,8,9.1 结构体,9.1.2 结构体变量的定义与初始化,1. 结构体类型变量的定义,在定义结构体类型的同时定义变量,

6、例如: struct student char num8,name20,sex; int age; float score; st30;,struct 结构体名 成员定义表; 变量名表;,2017/12/31,9,9.1 结构体,9.1.2 结构体变量的定义与初始化,1. 结构体类型变量的定义,直接定义结构体类型变量,例如: struct char num8,name20,sex; int age; float score; st30, a, b, c;,struct 成员定义表; 变量名表;,2017/12/31,10,9.1 结构体,9.1.2 结构体变量的定义与初始化,2. 结构体变量的

7、初始化,【例9.4】结构体变量的初始化。 struct date int year, month, day; struct student char num8, name20, sex; struct date birthday; float score; a=9606011,Li ming,M,1977,12,9,83, b=9608025,Zhang liming,F,1978,5,10,87,c;,如果初值个数少于结构体成员个数,则将无初值对应的成员赋以0值。 如果初值个数多于结构体成员个数,则编译出错。,2017/12/31,11,9.1 结构体,9.1.2 结构体变量的定义与初始化,

8、2. 结构体变量的初始化,【例9.5】结构体数组的初始化。 struct s char num8,name20,sex; float score; stu3=9606011,Li ming,M,87.5, 9606012,Zhang jiangguo,M,79, 9606013,Wang ping,F,90;,元素的个数可以省略,根据赋初值时结构体常量的个数确定数组元素的个数,2017/12/31,12,9.1 结构体,9.1.2 结构体变量的定义与初始化,3. 结构体变量的运算,用sizeof运算符计算结构体变量所占内存空间,struct date int year, month, day;

9、struct student char num8, name20, sex; struct date birthday; float score; a;,sizeof(a) 的结果为8+20+1+6+4=39 sizeof(struct student) 的结果为39,2017/12/31,13,9.1 结构体,9.1.2 结构体变量的定义与初始化,3. 结构体变量的运算,同类型结构体变量之间的赋值运算,结构体变量之间进行赋值时,系统将按成员一一对应赋值。,struct date int year, month, day;struct student char num8, name20, se

10、x; struct date birthday; float score; a=9606011,Li ming,M,1977,12,9,83,b,c;c = a;,2017/12/31,14,9.1 结构体,9.1.2 结构体变量的定义与初始化,3. 结构体变量的运算,对结构体变量进行取址运算,struct date int year, month, day;struct student char num8, name20, sex; struct date birthday; float score; a;,对结构体变量a进行 &a 运算,可以得到a的首地址,它是结构体类型指针。,2017/

11、12/31,15,9.1 结构体,9.1.2 结构体变量的定义与初始化,4. 结构体变量成员的引用,结构体变量成员引用的一般形式: 结构体变量名.成员名,结构体变量a的各成员可分别表示为a.num、a.name、a.sex、a.birthday、a.score,struct date int year, month, day; struct student char num8, name20, sex; struct date birthday; float score; a;,“.”是分量运算符,运算级别最高。,a.birthday.yeara.birthday.montha.birthda

12、y.day,结构体变量的各个成员可进行何种运算,由该成员的数据类型决定,2017/12/31,16,9.1 结构体,9.1.2 结构体变量的定义与初始化,【例9.6】编写一个统计选票的程序。 struct candidate char name20; /* name为候选人姓名 */ int count; /* count为候选人得票数 */ list =invalid,0,Zhao,0,Qian,0, Sun,0,Li,0,Zhou,0;,2017/12/31,17,9.1 结构体,9.1.2 结构体变量的定义与初始化,main( ) int i,n; printf(Enter voten); scanf(%d, /* 输入所投候选人编号 */ ,2017/12/31,18,9.1 结构体,9.1.2 结构体变量的定义与初始化,for (i=1; iyear p-month p-day,“-”是指向结构体成员运算符,优先级为一级,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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