资源描述:
《C语言程序设计教程(第二版)教学课件徐新华第10章 结构类型.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章结构体为整合不同数据类型、但相互关联的一组数据,C语言提供一种称为“结构体”的数据结构。教学目的:掌握结构体类型的定义,结构体变量的定义与引用,指向结构体数据的指针变量的应用;了解结构体数组[,链表,枚举型,共用型,已有类型的别名定义等]。8/5/20211教学内容:10.1*结构体类型与结构体变量的定义10.2*结构体变量的引用与初始化10.3结构体数组10.4*指向结构体数据的指针本章要点本章作业与上机实践8/5/2021210.1*结构体类型与结构体变量的定义[案例10.1]定义一组反映学生基本情况的结构类型,用以存储学生的相关信息。struc
2、tdate/*日期结构类型*/{intyear;intmonth;intday;};structdate/*日期结构类型*/{intyear,month,day;};8/5/20213structstd_info/*学生信息结构类型*/{charno[7];charname[9];charsex[3];structdatebirthday;};structscore/*成绩结构类型*/{charno[7];intscore1,score2,score3;};字符数组的长度=实际长度+1(存储结束标志)允许是已定义的另一个结构体类型8/5/202141、结构体
3、类型的定义struct结构体类型名{数据类型数据项1;数据类型数据项2;…………数据类型数据项n;};分号不能少!结构体类型关键字8/5/20215(1)“结构体类型名”和“数据项”的命名规则,与变量名相同。(2)相同数据类型的数据项,既可逐个、逐行分别定义,也可合并成一行定义。例如,[案例10.1]中的结构体类型date。(3)结构体类型中的数据项,允许是已定义的另一个结构体类型。例如,[案例10.1]中、结构体类型std_info的数据项“birthday”。8/5/202162、结构体变量的定义(1)间接定义──先定义类型、再定义变量例如,利用[案
4、例10.1]中、结构体类型std_info,定义结构体变量student:structstd_infostudent;则结构体变量student拥有结构体类型std_info的全部数据项。结构体类型名不可缺!下列写法是错误的:structstudent;8/5/20217(2)直接定义──定义类型的同时,定义变量struct[结构类型名]{……}结构变量表;说明:结构类型中的数据项名(又称成员名),可以与程序中的变量同名。[返回]8/5/2021810.2*结构体变量的引用与初始化[案例10.2]利用[案例10.1]中的结构体类型std_info,定义结构体
5、变量student,用于存储和显示1个学生的信息。8/5/20219#include"struct.h"structstd_infostudent={"000102","张三","男",{1980,9,20}};#include"stdio.h"#include"conio.h"voidmain(){printf("No:%s",student.no);printf("Name:%s",student.name);printf("Sex:%s",student.sex);printf("Birthday:%d-%d-%d",student.
6、birthday.year,student.birthday.month,student.birthday.day);getch();}[案例10.1]中定义的结构体类型成员运算符8/5/202110程序运行结果:No:000102Name:张三Sex:男Birthday:1980-9-208/5/2021111、结构体变量成员的引用规则(1)基本类型:结构变量.成员例如,student.no,student.name等。(2)结构体类型:结构变量.成员[.成员……]例如:student.birthday.yearstudent.birthday.month
7、student.birthday.day本身是结构类型,只能访问它的成员8/5/202112(3)最低1级成员,等价同类型的普通变量。(4)既可引用结构体变量成员的地址,也可引用结构变量的地址。例如,&student.name,&student。8/5/2021132、结构体变量的初始化结构体变量={初值表}与1维数组相似,但结构体类型成员的初值,是一个初值表。例如,structstd_infostudent={"000102","张三","男",{1980,9,20}}。注:初值的数据类型,应与结构变量中相应成员所要求的一致,否则会出错。[返回]8/5/2
8、0211410.3结构体数组结构体数组的每一个元素,