在C程序中使用结构体.ppt

上传人:sh****n 文档编号:6670366 上传时间:2020-03-02 格式:PPT 页数:29 大小:266KB
返回 下载 相关 举报
在C程序中使用结构体.ppt_第1页
第1页 / 共29页
在C程序中使用结构体.ppt_第2页
第2页 / 共29页
在C程序中使用结构体.ppt_第3页
第3页 / 共29页
点击查看更多>>
资源描述
结构体 徐秋红办公地点 主楼四层 信息学院 411室办公电话 010 62336516E mail shinestar1129 主要内容 什么是结构体如何定义一个结构体如何声明结构体变量如何引用结构体变量 结构体的输入 输出操作 结构体成员操作等结构体数组 什么是结构体 除数组以外的又一个构造类型为什么引入结构体的概念例如 体检表 什么是结构体 例如 学生的成绩单 这些表格中数据的特点是什么 含义上具有相关性表现的形式上不完全相同 什么是结构体 表格的数据特点 表格中集合了各种类型的数据 无法用前面学过的任何单一种类的数据类型来完全描述因此C语言引入了一种能集中不同的数据类型于一体的构造类型 结构体 什么是结构体 结构体是一个新的构造类型是由编程者根据自己的需求而设计的一种结构形式 或称为由编程者自己设计的数据类型 例如 通过分析和整理要处理的数据内容 归纳需要哪些数据项 并指出每个数据项的表现形式 即它属于哪种数据类型 然后准备定义新的数据类型 结构体 定义结构体 定义结构体定义两个内容 structscore charnum 10 charname 20 intenglish intmath 自定义了一个数据类型 它的名字为score 结构体的内容是由多个数据项组成 每个数据项被称为该结构体的结构体成员 定义结构体 每个结构体必须先定义 后引用定义结构体其实是对结构体内部构成形式进行描述 即对其成员的声明 包括每个成员所具有的数据类型的描述 定义结构体类型的语句格式 struct结构体类型名 结构体的成员列表 structcoordinate doublex doubley 对每个成员必须分别声明 无论他们是否具有相同的数据类型 通讯录每条记录的描述 定义结构体类型 structaddr charname 20 chardepart 30 工作单位 charaddress 30 住址 intpostcode 邮编 charphone 9 电话号码 charemail 30 E mail 声明结构体变量 1 定义了结构体类型后 再声明结构体类型的变量struct结构体类型名 结构体成员表 struct结构体类型名结构体变量名 先定义结构体类型 再声明结构体类型的变量 声明结构体变量 structsinger ints id doubles1 参赛歌曲得分 doubles2 知识问答得分 doublesum 该选手的总得分 structsingera1 a2 a3 a4 a5 a6 声明结构体变量 2 在定义结构体类型的同时声明结构体变量 即将结构体类型的定义和声明结构体变量放在同一个语句中 其一般形式如下 struct结构体类型名 结构体成员表 结构体变量名表 structsinger ints id doubles1 doubles2 doublesum a1 a2 a3 a4 a5 a6 声明结构体变量 3 在定义结构体类型时省略结构体类型名 并直接声明结构体变量 一般形式如下 struct 结构体成员表 结构体变量名表 即定义的结构体没有结构体类型名 如果省略结构体类型名 则称之为无名结构体 这种情况常常出现在函数内部 使用这种结构体定义形式时 一定是在定义结构体类型的同时 就声明结构体变量 structsinger ints id doubles1 doubles2 doublesum a1 a2 a3 a4 a5 a6 结构体的长度 结构体类型的长度一旦通过结构体类型定义语句定义了一个结构体类型 则这个结构体类型的长度也就被固定下来 一个结构体类型长度的计算sizeof 结构体类型名 一个结构体变量长度的计算sizeof 结构体变量名 定义结构体类型 如structsinger ints id doubles1 doubles2 stud1 则结构体变量stud1的长度是多少 sizeof 数据类型名 返回 数据类型名 的类型长度 sizeof 变量名 返回 结构体变量 的长度 定义结构体类型 includestructsinger ints id doubles1 doubles2 stud1 intmain void printf n n t长度 d d sizeof structsinger printf n n t长度 d d sizeof stud1 return0 s long c 结构体变量的初始化 结构体变量初始化的一般形式为 方式1 struct结构体类型名结构体变量名 初始化数据 方式2 struct结构体类型名 结构体成员表 结构体变量名 初始化数据 方式3 struct 结构体成员表 结构体变量名 初始化数据 结构体变量的初始化 由于结构体类型变量汇集了各类不同数据类型的成员 所以结构体类型变量的初始化就略显复杂 structach 定义学生结构体类型 charname 20 学生姓名 charsex 性别 intnum 学号 floatscore 3 三科考试成绩 stu1 Frank M 206110 78 5 91 5 95 0 stu2 结构体变量的引用 C语言对结构体变量的处理是通过对其成员的引用实现的 被称为成员 分量 运算符它在所有的运算符中优先级最高 引用结构体变量的成员的一般方式为 结构体变量名 成员名 一个整体 结构体变量的引用 从键盘给a4赋值 然后输出 scanf d scanf lf lf printf n d n printf f f n printf f n structsinger ints id doubles1 doubles2 doublesum a1 a2 113045 80 78 0 a3 a4 a4 s id a4 s1 a4 s2 a4 s id a4 s1 a4 s2 a4 sum a4 s1 a4 s2 给a3赋值 将a2的值赋给a3a3 a2 例如 给变量a1赋值a1 s id 102011 a1 s1 88 5 a1 s2 89 a1 sum a1 s1 a1 s2 声明结构体变量 例如 structach 定义学生结构体类型 charname 20 学生姓名 charsex 性别 intnum 学号 floatscore 3 三门课程的考试成绩 structachstu1 Jonh M 310 75 96 63 stu2 Lili F 217 92 87 70 stu1 score 0 stu1 score 1 stu1 score 2 3 inti floatavg 2 sum 0 0 avg 2 sum 3 求每一位学生的平均成绩 avg 1 for i 0 i 3 i sum sum stu2 score i 结构体数组 structach 定义学生结构体类型 charname 20 学生姓名 charsex 性别 intnum 编号 floatscore 3 三门课程的考试成绩 stu0 stu1 structach charname 20 charsex intnum floatscore 3 stu 2 stu 2 John M 310 7596 63 Lili F 217 92 78 70 printf n s f stu 0 name stu 0 score 2 如果要输出第一位学生的名字和其最后一科的成绩 如何初始化数组 对结构体做一个说明 结构体类型是人们制造的一种类型 它与其他C的基本类型的特性一样结构体变量是由结构体声明的变量 它与C的其他基本变量的特性一样结构体的成员是由C的其他类型来定义的 为什么结构体的成员不能由其他已经定义的结构体来定义呢 结构体定义 再来看一张学生体检表 FrankM1 7867 5 1 00 9 恐高症 MaryF1 6158 5 0 70 8 青霉素过敏 结构体的嵌套 structsight table floatleft floatright structcase table charname 20 charsex floatheight floatweight structsight tablesight charcomment 30 health 2 结构体的嵌套 对嵌套的结构体变量成员的引用 strcpy health 0 name Frank health 0 sex M health 0 sight left 1 2 health 0 sight right 1 0 printf 2f 2f n health 0 sight left health 0 sight right health 0 是结构体数组health的第1个元素 Frank 举例 includestructdate intyear intmonth intday structgood charname 20 charplace 20 intnumber floatprice structdatedeadline 现有库存信息表 包括商品名称 存放地点 库存量 商品单价 入库日期 如 book No 3 57000 202 5 2009 5 19要求用结构体变量保存此信息 并输出 st proc c intmain void structgoodproc strcpy proc name book strcpy proc place No 3 proc price 202 5 proc number 57000 proc deadline year 2009 proc deadline month 5 proc deadline day 19 printf s s d 2f d年 d月 d日 n proc name proc place proc number proc price proc deadline year proc deadline month proc deadline day return0 st proc c 小结 为什么要引用结构体类型 其特点是什么 如何定义结构体类型 如何声明结构体变量 如何声明结构体数组 如何使用结构体变量 结构体成员的表示方法和引用方法
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!