




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章结构体与共同体 结构体变量的定义结构体变量的引用结构体变量的初始化结构体数组共用体枚举类型 9 1概述 结构体 structure 是一种数据类型 它把互相联系的数据组合成一个整体 例 一个学生的学号 姓名 性别 年龄 成绩 地址 是互相联系的数据 在C语言中用 结构体 structure 来定义 structstudent intnum 学号 charname 20 姓名 charsex 性别 intage 年龄 floatscore 成绩 charaddr 30 地址 struct是关键字 不能省略 student是定义的结构体类型名 结构体中的每一项数据 称为结构体 成员 或 域 结构体变量所占内存长度等于各成员所占内存长度之和 不能少 9 2结构体变量的定义 定义变量的方式有三种 一 先定义结构体类型 再定义变量例 intnum 学号 charname 20 姓名 charsex 性别 intage 年龄 floatscore 成绩 charaddr 30 地址 student1 student2 struct student struct student 结构体变量中的各成员 在内存中顺序存放结构体变量所占内存大小用运算符sizeof计算 例 printf d d n sizeof structstudent1 sizeof student2 二 在定义类型的同时定义变量structstudent intnum 学号 charname 20 姓名 charsex 性别 intage 年龄 floatscore 成绩 charaddr 30 地址 student1 student2 三 直接定义变量 不出现结构体名 struct intnum 学号 charname 20 姓名 charsex 性别 intage 年龄 floatscore 成绩 charaddr 30 地址 student1 student2 四 成员是另一个结构体变量structdate 日期结构 intmonth 月 intday 日 intyear 年 structstudent intnum 学号 charname 20 姓名 charsex 性别 intage 年龄 structdatebirthday charaddr 30 地址 student1 student2 成员是另一个结构体变量 structstudent intnum 学号 charname 20 姓名 charsex 性别 intage 年龄 structdate 日期结构 intmonth 月 intday 日 intyear 年 birthday charaddr 30 地址 student1 student2 9 3结构体变量的引用 1 一般情况下 不能将一个结构体变量作为整体来引用 只能引用其中的成员 分量 引用结构体成员的方式 结构体变量名 成员名 是 成员运算符 分量运算符 例1 printf d student1 num printf d s c d f s student1 错了 2 当成员是另一个结构体变量时 应一级一级地引用成员 例4 student1 num student1 name student1 birthday month student1 birthday day student1 birthday year student1 3 仅在以下两种情况下 可以把结构体变量作为一个整体来访问 1 结构体变量整体赋值 例 student2 student1 2 取结构体变量地址 例 printf x 输出student1的地址 9 4结构体变量的初始化 structstudent longintnum 学号 charname 20 姓名 charsex 性别 charaddr 20 地址 a 1001 Mary F 123BeijingRoad 例 输出学生情况 includevoidmain structstudent longintnum charname 20 charsex charaddr 20 intscore a 1001 Mary F Beijing 86 a score a score 10 printf ld s c s d n a num a name a sex a addr a score 9 5结构体数组 一 结构体数组的定义structstudent intnum charname 20 charsex intage floatscore charaddr 30 structstudentstu 3 3个元素的结构体数组 二 结构体数组的初始化structstudent intnum charname 20 charsex intage floatscore charaddr 30 stu 3 1001 Mary F 18 89 BejingRoad 1002 Jack M 19 83 130ShanghaiRoaad 1003 Hare M 19 78 Shengyan 例 输出3个学生情况内容 includevoidmain inti structstudent intnum charname 20 charsex intage intscore charaddr 30 stu 3 1001 Mary F 18 89 BejingRoad 1002 Jack M 19 83 ShanghaiRoaad 1003 Hare M 19 78 Shengyan for i 0 i 3 i printf d s c d d s n stu i num stu i name stu i sex stu i age stu i score stu i addr 例 对候选人得票的统计程序 设有三个候选人 每次输入一个得票的候选人的名字 要求最后输出各候选人得票结果 include stdio h include string h structperson 候选人信息结构体 charname 20 姓名 intcount 得票数 leader 3 Li 0 Zhang 0 Chen 0 include include string h structperson charname 20 intcount leader 3 li 0 zhang 0 chen 0 voidmain inti j charname 20 for i 1 i 10 i scanf s name for j 0 j 3 j if strcmp name leader j name 0 leader j count printf n for i 0 i 3 i printf 5s d n leader i name leader i count 9 8共用体 1 共用体概念 几种不同的变量放在同一个地址开始的单元 共占同一段内存的结构 称为 共用体 类型的结构 共用体类型变量定义 例 uniondata inti charch floatf a b c i ch f是成员列表 a b c是共用体变量 例 可以将类型定义与变量定义分开 uniondata inti charch floatf uniondataa b c 共用体变量所占内存长度等于最长成员的长度 共用体变量的引用 a cha ib ib fa fc i 共用体类型数据的特点 1 同一内存段可以存放几种不同内型的成员 但是在每一瞬时只能存放其中一种 2 共用体变量起作用的成员是最后一次存放的成员 例 a i 1 a ch a a f 1 5 只有a f有效 3 共用体变量的地址和它的各成员的地址都是同一地址 例 a a i a ch都是同一地址 9 9枚举类型 如果一个变量只有几种可能的值 可以定义为枚举类型 定义枚举类型用enum开始 enumweekday sum mon tue wed thu fri sat 定义变量 enumweekdayworkday week end 可以直接定义变量 enum sun mon wen thu fri sat workday week end 枚举类型变量 列举变量所有的值 是标识符 是常量 按顺序取值为1 2 3 4 5 6 9 10用typedef定义类型C提供的标准类型 int char float double long struct Union用typedef定义的类型 例 typedefintINTEGER typedeffloatREAL inti j floata b INTEGERi j REALa b 这两行等效 小结 1 结构体的定义与应用2 共用体的定义与应用3 枚举类型的定义与应用4 用户定义类型 练习 1 指出程序中的错误 并改正之 includevoidmain struct intnum charname 20 omtage stud structstud 101 Lifun 18 printf d s d n stud 2 想输出三个学生的姓名 请对程序填空 includestruchstudent intnum charname 20 intage voidmain structstudentstud 3 101 Li 18 102 wang 19 103 zhang 21 3 要输出结构体变量stud中的成员age的值 不正确的用法是 includevoidmain structstudent intnum charname 20 intage structstudent p stud 101 Lifun 18 p 1 P age 2 stud age 3 student age 4 p age includestructstu intnum charname 10 intage voidfun structstu p printf s n p name voidmain structstustudents 3 9801 Zhang 20 9802 Wang 19 9803 Zhao 18 fun students 4 写出此程序的正确结果 运行结果 Wang 5 下列程序的输出结果是 includestructabc inta b c voidmain structabcs 2 1 2 3 4 5 6 intt t s 0 a s 1 b printf d n t A 5B 6C 7D 8 6 设有以下结构类型说明和变量定义 则变量a在内存所占字节数是 unionstud charnum 6 ints 4 doubleave a structstud charnum 6 ints 4 doubleave a 3 90 16 7 以下程序的输出是 includestructst intx int y p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 粉尘危害知识专题培训课件
- 数控研磨工作业指导书
- 茶园管理员作业指导书
- 钽铌精炼工数字化技能考核试卷及答案
- 电气设备点检员协作考核试卷及答案
- 印染染化料配制工晋升考核试卷及答案
- 梳理水刺非织造布制作工作业指导书
- 一年级年级组长信息反馈优化计划
- 篮球知识培训讲座课件
- 从课本中收获的人生哲理读后感类话题(9篇)
- 病历书写基本规范-课件
- 华住酒店集团讲义
- 送货不达应急预案
- 牙体牙髓病治疗常用器械及其使用-课件
- 机动车维修竣工出厂合格证样式
- 广东省地质灾害危险性评估报告
- GB/T 32486-2016舞台LED灯具通用技术要求
- 锚杆工程隐蔽验收记录
- 整套教学课件《现代心理与教育统计学》研究生
- 油漆安全技术说明书(MSDS)
- RBA(原EICC)ERT应急准备与响应培训课件
评论
0/150
提交评论