第9章 结构体与枚举类型
第9章 结构与枚举类型【主要内容】掌握结构体的概念、结构体的定义、初始化、结构体变量的 引用、结构体数组的运用、学会使用结构体类型的数据,解决实 际问题。
【学习重点】结构数组。
四川信息职业技术学院·《C语言》
第9章 结构与枚举类型第一节 第二节 第三节 结构体变量 结构体数组 枚举类型
四川信息职业技术学院·《C语言》
第一节
结构体变量什么是“结构体” 呢???
就像自定义函数一样,C语言也提供了一种方法让 程序员自己定义数据类型,这就是“结构体”。
四川信息职业技术学院·《C语言》
第一节
结构体变量
一、结构体规则1.结构体类型的定义结构体是一种新数据类型,属构造类型,它由若干类型各异 的“成员”组成;描述这些“成员”可以使用任何基本数据类型, 甚至是另外一种构造数据类型都行。 打个比方,我们定义一种结构类型(person)描述青年,青 年由几个基本属性(即成员)决定(name,color,sex,age 等),我们可以用这个结构类型person去定义一个具体的青年人 zhangshan 。
该怎么定义???
四川信息职业技术学院·《C语言》
第一节
结构体变量
定义结构类型使用关键字“struct”。
struct person { char name[20]; /* 定义姓名 */ char color[10]; /* 定义肤色 */ char sex[2]; /* 定义性别 */ int age; /* 定义年龄 */ }; /* 注意这里有分号 */ struct person zhangshan, class_one[100];定义了结构类型person,并用该类型定义结构变量 zhangshan和结构数组class_one[100]。
四川信息职业技术学院·《C语言》
第一节
结构体变量你来试试!
定义一个商品结构类型goods,设商品包含属性有:商 品名、商品代码、厂商、单价、质量。struct goods { char goodsname[15]; char goodcode[15]; char companyname[30] ; float price, weight ; };四川信息职业技术学院·《C语言》
第一节
结构体变量
综上,结构体类型简称为结构类型,其定义格式为:
struct <结构体名> { 类型 成员1; 类型 成员2; …… };
四川信息职业技术学院·《C语言》
第一节
结构体变量
2.结构体类型变量的定义结构体变量简称为结构变量,它由结构类型定义,有三种定义方法。
⑴ 先定义结构类型,再定义结构变量 struct book /* 定义结构体类型 */ { char bookname[20]; float price; char publisher[20]; char author[10]; }; struct book mybook, storybook;用这种方法定义结构变量,是最常用的方法,但不能省略关键字 “struct”。四川信息职业技术学院·《C语言》
第一节
结构体变量
⑵ 定义结构类型的同时定义结构变量
struct book /* 定义结构体类型 */ { char bookname[20]; float price; char publisher[20]; char author[1
0]; } struct book mybook, storybook;
四川信息职业技术学院·《C语言》
第一节
结构体变量
⑶ 不定义结构体名,直接定义结构变量
struct /* 不定义结构体名 */ { char bookname[20]; float price; char publisher[20]; char author[10]; } struct book mybook, storybook;
四川信息职业技术学院·《C语言》
第一节补充说明:
结构体变量
当某结构类型的成员又是另外一个结构类型时,称嵌套定义。struct brith_date { int month ; int day ; int year ; }; struct { char name[10] ; char address[30]; char tel[12]; int age; struct data birth_day; char sex[3]; } student_01, employee;四川信息职业技术学院·《C语言》
定义了student_01 和employee两个变量, 但是没有定义此结构体 的名字,因此不能再定 义与student_01和 employee同类的其它结 构变量了!
第一节 提示:
结构体变量
成员名可以与程序中的其它变量名相同,两者有不同的从属关系, 系统并不会混淆;结构体类型是抽象的,它仅告诉系统这个类型由那些类型的成员 构成,它并不占内存空间;结构体变量是具体的,它占有一片连 续的内存空间,空间大小是所有成员变量所占的字节数的总和。 编程时,常用“sizeof(struct 结构名 结构变量名)”计算得出。
四川信息职业技术学院·《C语言》
第一节
结构体变量
3.访问结构体变量成员的方法 对结构体成员的访问要用成员运算符“·” 成员运算符虽然写法同小数点,但是完全没有小数点的含义。
在C运算符中,它与括号一样有最高的优先级。如果一个结构体内又嵌套了一个结构体类型,则访问一个成 员时,应采取从外到内、逐级访问的方法,直达要访问的成 员为止。 例如: employee. age = 18; gets(employee. name);四川信息职业技术学院·《C语言》
第一节
结构体变量
【例9-1】分析以下代码及输出结果。
源代码: /* 例9-1,9-1.c */ #include <stdio.h> #include <string.h> struct curriculum { char curname[30] ; float curgrade; };
struct student{ char name[8] ; char stuid[10] ; char department[30] ; char semester[10]; struct curriculum course; } stu1 = { "lihong", "200133420", "computerdepartment", "200609", "Clanguage", 87 }; /* stu1为全局变量,并在定义stu1时 初始化成员 */
四川信息职业技术学院·《C语言》
第一节
结构体变量
void main( ) { struct student stu2; printf(“Enter stu2’s information: \n”); gets(); /* 从键盘输入数据初始化stu2 */ gets(stu2.stuid); gets(stu2.department); gets(stu2.semester); gets(stu2.course.curname); scanf("%f",&stu2.course.curgrade); printf(“the sut1’s information is : \n”); printf(" %s %s %s %s %s %f\n", , stu1.stuid,stu1.department,stu1.semester, stu1.course.curname,stu1.course.curgrade); printf(“the sut2’s information is
: \n”); printf(" %s %s %s %s %s %f\n", , stu2.stuid, stu2.department, stu2.semester, stu2.course.curname, stu2.course.curgrade); }四川信息职业技术学院·《C语言》
第一节运行输出:
结构体变量
liuliting 20060205 electronComputer 200703 English 76 lihong 200133420 computerdepartment 200609 Clanguage 87.000000 liuliting 20060205 electronComputer 200703 English 76.000000
四川信息职业技术学院·《C语言》
第一节
结构体变量
【思考验证】 结构体类型、结构变量类型、结构体成员类型三者之间有无联系? 【融会贯通】 1.把你自己的信息定义一个嵌套的结构体类型informat,包括 姓名、性别、生日、籍贯、家庭住址、联系方式等;其中,生日是 结构体类型,包括:出生年、月、日;然后定义一个此类型的变量 my_info,初始化,并输出之。 2.定义一个英语单词的结构体类型,包括单词、词性、汉语解 释、短语等内容,然后用它定义单词compter,初始化。
四川信息职业技术学院·《C语言》
第一节
结构体变量
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




