《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第5讲 结构

弗原創IT教育中心 第5讲结构 为将不同数据类型、但相互关联的一组数 据,组合成一个有机整体使用,C语言提供一种 称为“结构”的数据结构 5.1结构类型与结构变量的定义 5.2结构变量的引用与初始化 5.3结构数组 54指向结构类型数据的指钍 5.5共用型和枚举型
第5讲 结构 为将不同数据类型、但相互关联的一组数 为将不同数据类型、但相互关联的一组数 据,组合成一个有机整体使用, 据,组合成一个有机整体使用,C语言提供一种 称为“结构”的数据结构。 5.1 结构类型与结构变量的定义 结构类型与结构变量的定义 5.2 结构变量的引用与初始化 结构变量的引用与初始化 5.3 结构数组 5.4 指向结构类型数据的指针 指向结构类型数据的指针 5.5 共用型和枚举型 共用型和枚举型

弗原創IT教育中心 5.1结构类型与结构变量的定义 C语言中的结构类型,相当于其它高级语言中的“记录”类 型 51结构类型定义 struct结构类型名/ struct是结构类型关键字* 数据类型数据项 数据类型数据项2; 数据类型数据项n 体*此行分号不能少!* 案例51定义一个反映学生基本情况的结构类型,用以存储学生的 相关信息。 /*功能:定义一个反映学生基本情况的结构类型*/
5.1 结构类型与结构变量的定义 结构类型与结构变量的定义 C语言中的结构类型,相当于其它高级语言中的 语言中的结构类型,相当于其它高级语言中的“记录”类 型。 5.1 结构类型定义 struct 结构类型名 /* struct是结构类型关键字 是结构类型关键字*/ {数据类型 数据项1; 数据类型 数据项2; …… …… 数据类型 数据项n; }; /* 此行分号不能少! 此行分号不能少!*/ [案例5.1] 定义一个反映学生基本情况的结构类型,用以存储学生的 相关信息。 /*功能:定义一个反映学生基本情况的结构类型*/

弗原創IT教育中心 struct date /日期结构类型:由年、月、日三项组成* fint year at month, int day struct std info//学生信息结构类型:由学号、姓名、性别和生日组成 ichar no[7 char name char sex 3; struct date birthday; struct score/*成绩结构类型:由学号和三门成绩共4项组成*/ char no 7; int score 1 int score2 3
struct date /*日期结构类型:由年、月、日三项组成*/ {int year; int month; int day; }; struct std_info std_info //学生信息结构类型:由学号、姓名、性别和生日组成 {char no[7]; {char no[7]; char name[9]; char name[9]; char sex[3]; char sex[3]; struct date birthday; date birthday; }; struct score /*成绩结构类型:由学号和三门成绩共4项组成*/ {char no[7]; {char no[7]; int score1; int score2; int score3; };

弗原創IT教育中心 (1)“结构类型名”和“数据项”的命名规则,与变量名 相同。 (2)数据类型相同的数据项,既可逐个、逐行分别 定义,也可合并成一行定义。 例如,本案例代码中的日期结构类型,也可改为如下 形式 struct date fint year, month, day; (3)结构类型中的数据项,既可以是基本数据类 型,也允许是另一个已经定义的结构类型。 例如,本案例代码中的结构类型 std info,其数据项 birthday就是一个已经定义的日期结构类型date
(1)“结构类型名”和“数据项”的命名规则,与变量名 的命名规则,与变量名 相同。 (2)数据类型相同的数据项,既可逐个、逐行分别 )数据类型相同的数据项,既可逐个、逐行分别 定义,也可合并成一行定义。 定义,也可合并成一行定义。 例如,本案例代码中的日期结构类型 例如,本案例代码中的日期结构类型,也可改为如下 ,也可改为如下 形式: struct date {int year, month, day; year, month, day; }; (3)结构类型中的数据项,既可以是基本数据类 结构类型中的数据项,既可以是基本数据类 型,也允许是另一个已经定义的结构类型。 型,也允许是另一个已经定义的结构类型。 例如,本案例代码中的结构类型 例如,本案例代码中的结构类型std_info std_info,其数据项 “birthday birthday”就是一个已经定义的日期结构类型 就是一个已经定义的日期结构类型date

弗原創IT教育中心 52结构变量定义 用户自己定义的结构类型,与系统定义的标准类型 int、char等)一样,可用来定义结构变量的类型 1定义结构变量的方法,可概括为两种 (1)同接定义法一先定义结构类型、再定义结构 变量 例如,利用[案例5.1中定义的学生信息结构类型 std info,定义了一个相应的结构变量 student: struct std into student 结构变量 student:拥有结构类型的全部成员,其中 birthday成员是一个日期结构类型,它又由3个成员构成 注意:使用间接定义法定义结构变量时,必须同时 指定结构类型名
5.2 结构变量定义 用户自己定义的结构类型,与系统定义的标准类型 己定义的结构类型,与系统定义的标准类型 (int、char等)一样,可用来定义结构变量的类型。 等)一样,可用来定义结构变量的类型。 1.定义结构变量的方法,可概括为两种: 定义结构变量的方法,可概括为两种: (1)间接定义法──先定义结构类型、再定义结构 先定义结构类型、再定义结构 变量 例如,利用[案例5.1]中定义的学生信息结构类型 中定义的学生信息结构类型 std_info std_info,定义了一个相应的结构变量 定义了一个相应的结构变量student student: struct std_info student; std_info student; 结构变量student student:拥有结构类型的全部成员,其中 拥有结构类型的全部成员,其中 birthday birthday成员是一个日期结构类型,它又由 成员是一个日期结构类型,它又由3个成员构成。 注意:使用间接定义法定义结构变量时,必须同时 :使用间接定义法定义结构变量时,必须同时 指定结构类型名。 指定结构类型名

弗原創IT教育中心 (2)直接定义法—一在定义结构类型的同时,定义结构变量 例如,结构变量 student的定义可以改为如下形式: struct std info 3 student; 同时定义结构类型及其结构变量的一般格式如下 struct[结构类型名] }结构变量表 说明 (1)结构类型与结构变量是两个不同的概念,其区别如同nt类 型与int型变量的区别一样 (2)结构类型中的成员名,可以与程序中的变量同名,它们代 表不同的对象,互不干扰
(2)直接定义法──在定义结构类型的同时,定义结构变量 例如,结构变量student的定义可以改为如下形式: struct std_info std_info {…… } student; } student; 同时定义结构类型及其结构变量的一般格式如下: struct [结构类型名] { …… } 结构变量表; 2.说明 (1)结构类型与结构变量是两个不同的概念,其区别如同int类 型与int型变量的区别一样。 (2)结构类型中的成员名,可以与程序中的变量同名,它们代 表不同的对象,互不干扰

弗原創IT教育中心 52结构变量的引用与初始化 案例52利用案例5中定义的结构类型 Istruct std info, 定文一个结构变量 student,用于存储和显示一个学生的基 本情况。 include /*定义并初始化一个外部结构变量 student*/ struct std info student={"000102";"张三","男",{1980,20}; main( i printf(No: %os\n",student. no); printf(Name: %os\n", student name) printf("Sex: %s\n", student sex) printf( Birthday: %/od-%od-%od\n",student birthday year, student birthdaymonth, student. birthday day) 程序运行(17)
5.2 结构变量的引用与初始化 结构变量的引用与初始化 [案例5.2] 利用 [案例5.1 ]中定义的结构类型 中定义的结构类型struct std_info std_info, 定义一个结构变量 定义一个结构变量student student,用于存储和 显 示 一 个 学 生 的 基 本情况。 #include"stdio.h include"stdio.h " /*定义并初始化一个外部结构变量 定义并初始化一个外部结构变量student */ student */ struct std_info student={"000102"," std_info student={"000102","张三"," 男",{1980,9,20}}; ",{1980,9,20}}; main() { printf("No printf("No: %s \n",student.no); n",student.no); printf("Name printf("Name: %s \n",student.name); n",student.name); printf("Sex printf("Sex: %s \n",student.sex); n",student.sex); printf("Birthday printf("Birthday: %d -%d -%d \n",student.birthday.year, n",student.birthday.year, student.birthday.month, student.birthday.day); student.birthday.month, student.birthday.day); } 程序运行 (17 )

弗原創IT教育中心 程序运行结果 NO:000102 ame 张 男 Birthday: 1980-9-20 1结构变量的引用规则 对于结构变量,要通过成员运算符“”,逐个访问其成 员,且访问的格式为: 结构变量成员 /米其中的“”是成员运算符* 例如,案例中的 student. no,引用结构变量 :student中的 no成员; student name引用结构变量 student中的name成 员,等等
程序运行结果: 程序运行结果: No: 000102 No: 000102 Name: 张三 Sex: 男 Birthday:1980 Birthday:1980-9-20 1.结构变量的引用规则 结构变量的引用规则 对于结构变量,要通过成员运算符 对于结构变量,要通过成员运算符“.”,逐个访问其成 ,逐个访问其成 员,且访问的格式为: 员,且访问的格式为: 结构变量.成员 /*其中的“.”是成员运算符*/ 例如,案例中的 例如,案例中的student.no student.no,引用结构变量student student中的 no成员;student.name student.name引用结构变量student student中的name成 员,等等

弗原創IT教育中心 如果某成员本身又是一个结构类型,则只能通过多级 的分量运算,对最低一级的成员进行引用 此时的引用格式扩展为: 结构变量成员.子成员.最低1级子成员 例如,引用结构变量 student中的 birthday l成员的格式 分别为 student birthday year student birthdaymonth student birthday day (1)对最低一级成员,可像同类型的普通变量 样,进行相应的各种运算。 (2)既可引用结构变量成员的地址,也可引用结构 变量的地址
如果某成员本身又是一个结构类型,则只能通过多级 如果某成员本身又是一个结构类型,则只能通过多级 的分量运算,对最低一级的成员进行引用。 的分量运算,对最低一级的成员进行引用。 此时的引用格式扩展为: 此时的引用格式扩展为: 结构变量.成员.子成员.….最低 1级子成员 例如,引用结构变量 例如,引用结构变量student student中的birthday birthday成员的格式 分别为: student.birthday.year student.birthday.year student.birthday.month student.birthday.month student.birthday.day student.birthday.day ( 1 )对最低一级成员,可像同类型的普通变量一 对最低一级成员,可像同类型的普通变量一 样,进行相应的各种运算。 样,进行相应的各种运算。 ( 2)既可引用结构变量成员的地址 )既可引用结构变量成员的地址,也可引用结 构 变量的地址

弗原創IT教育中心 例如,& student name,& student 2结构变量的初始化 结构变量初始化的格式,与一维数组相似: 结构变量={初值表} 不同的是:如果某成员本身又是结构类型,则 该成员的初值为一个初值表 例如,[案例52中的 Student={"0002,"张 男",{19809,20} 注意:初值的数据类型,应与结构变量中相应 成员所要求的一致,否则会出错
例如,&student.name &student.name ,&student &student 。 2.结构变量的初始化 结构变量的初始化 结构变量初始化的格式,与一维数组相似: 结构变量初始化的格式,与一维数组相似: 结构变量={初值表} 不同的是:如果某成员本身又是结构类型,则 不同的是:如果某成员本身又是结构类型,则 该成员的初值为一个初值表。 该成员的初值为一个初值表。 例如,[案例5.2]中的student={"000102", " student={"000102", "张三", "男", {1980,9,20}} ", {1980,9,20}}。 注意:初值的数据类型,应与结构变量中相应 :初值的数据类型,应与结构变量中相应 成员所要求的一致,否则会出错。 成员所要求的一致,否则会出错
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第4讲 指针.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第3讲 数组.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第2讲 函数.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第1讲 单片机概述.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第19讲 单片机系统抗干扰设计、电源的设计.pdf
- DSP集成开发环境(CCS).ppt
- 比高公司:《HD7279A 串行接口8位LED数码管及64键键盘智能控制芯片》学习资料(第四版).pdf
- 江西师范大学通信系:《光纤通信技术与应用》讲义PPT课件(叶志清).ppt
- 清华大学电机系FACTS研究所:《可编程序控制器(PLC)实验讲座》总结及考核(于庆广).ppt
- 清华大学电机系FACTS研究所:《可编程序控制器(PLC)实验讲座》第五讲 EM-II型PLC介绍(于庆广).ppt
- 清华大学电机系FACTS研究所:《可编程序控制器(PLC)实验讲座》实验一 验机和基本指令练习(于庆广).ppt
- 清华大学电机系FACTS研究所:《可编程序控制器(PLC)实验讲座》第三讲 日立(HITACHI)(PLC)分类(于庆广).ppt
- 清华大学电机系FACTS研究所:《可编程序控制器(PLC)实验讲座》第二讲 典型继电器控制线路(于庆广).ppt
- 清华大学电机系FACTS研究所:《可编程序控制器(PLC)实验讲座》第一讲 PLC的定义(于庆广).ppt
- 中国移动通信:《移动智能网原理》讲义(PPT课件).ppt
- 浙江大学:《通信原理》课程教学资源(PPT课件讲稿)第七章 模拟信号的数字传输.ppt
- 浙江大学:《通信原理》课程教学资源(PPT课件讲稿)第六章 正弦载波数字调制.ppt
- 浙江大学:《通信原理》课程教学资源(PPT课件讲稿)第六章 恒包络调制.ppt
- 浙江大学:《通信原理》课程教学资源(PPT课件讲稿)第五章 数字基带传输系统.ppt
- 浙江大学:《通信原理》课程教学资源(PPT课件讲稿)第四章 模拟通信系统.ppt
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第6讲 单片机内部结构和工作原理.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第7讲 80C51系列单片机指令系统 系列单片机指令系统.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第8讲 中断系统.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第9讲 汇编语言程序设计.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第10讲 80C51定时/计数器.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第11讲 串行通信.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第12讲 单片机系统扩展.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第13讲 IIC总线编程技术.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第14讲 实时时钟芯片DS12887 DS12887应用.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第15讲 A/D转换接口技术.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第16讲 D/A转换器接口.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第17讲 单片机与键盘接口.pdf
- 《C语言及其单片机系统开发单片机系统开发》培训课件(PPT讲稿,教师版,武汉原创)第18讲 点阵式LCD显示设计.pdf
- 清华大学:《模拟电子技术基础》课程教学资源(第三版,习题)第一章 半导体基础知识自测题(童诗白、华成英).doc
- 清华大学:《模拟电子技术基础》课程教学资源(第三版,习题)第七章 信号的运算和处理自测题(童诗白、华成英).doc
- 清华大学:《模拟电子技术基础》课程教学资源(第三版,习题)第三章 多级放大电路自测题(童诗白、华成英).doc
- 清华大学:《模拟电子技术基础》课程教学资源(第三版,习题)第九章 功率放大电路自测题(童诗白、华成英).doc
- 清华大学:《模拟电子技术基础》课程教学资源(第三版,习题)第二章 基本放大电路自测题(童诗白、华成英).doc
- 清华大学:《模拟电子技术基础》课程教学资源(第三版,习题)第五章 放大电路的频率响应自测题(童诗白、华成英).doc
- 清华大学:《模拟电子技术基础》课程教学资源(第三版,习题)第八章 波形的发生和信号的转换自测题(童诗白、华成英).doc