网站大量收购独家精品文档,联系QQ:2885784924

《C语言程序设计》课件PPT09 结构体.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《C语言程序设计》课件PPT09 结构体

计算机程序设计 ch 10 结 构 体 1 结构体 (Structure)定义与引用 结构体概述 结构体类型的声明 结构体变量的定义 结构体变量的初始化 结构体变量的引用 结构体概述 结构体 将不同类型的数据组合成一个整体 用来表示简单类型无法描述的复杂对象 可以用结构体来定义用户自己的数据结构 举例 描述学生信息 结构体类型的声明 一般形式 struct [结构体名] { 成员表列 }; “成员表列”形式 类型 成员名; 类型 成员名; ... ... 结构体类型声明的说明 (1) 声明了一种类型,而不是定义变量 结构体名可以没有,但是这样就无法再次使用该结构体类型了 成员表列中是成员(Member)的定义 成员的定义形式与变量定义相同 成员类型可以是另一结构体类型,但不可直接或间接递归嵌套(自身); 成员表列不可为空,至少要有一个成员 结构体类型声明的说明 (2) 注意{} 后有分号 同一结构体的成员不能重名 不同结构体的成员可以重名; 结构体成员和其他变量可以重名; 结构体类型与其成员或其他变量可重名 结构体类型名称是 struct 结构体名, 注意struct关键字不能省略 结构体类型声明的说明 (3) 即使两个结构体声明中的成员类型、名称、顺序都完全一致,它们也是不同的类型 结构体类型也要“先声明,后使用” 如果结构体类型声明在函数内部,则该函数之外无法引用此结构体类型 一般把结构体类型声明放到文件最前面 也可以把结构体类型声明放在头文件里 结构体类型的声明举例 结构体变量的定义 (1) 先声明结构体类型再定义变量 结构体变量的定义 (2) 在声明结构体类型的同时定义变量a 结构体变量的定义 (3) 直接定义无名结构类型变量 结构体声明和变量定义举例 结构体变量的初始化 按照成员的顺序和类型对成员初始化 结构体变量中成员的引用 一般形式 结构体变量名.成员名 成员运算符 . 具有最高的优先级,自左向右结合 说明 结构体成员和同类型的变量用法相同 若成员类型又是一个结构体,则可以使用若干个成员运算符,访问最低一级的成员 结构体变量中成员的引用举例 结构体变量整体引用 结构体类型变量之间可以直接相互赋值 实质上是两个结构体变量相应的存储空间中的所有数据直接拷贝 包括复杂类型在内的所有结构体成员都被直接赋值,如字符串、结构体类型等 函数的实参和形参可以是结构体类型,并且遵循实参到形参的单向值传递规则 为了提高程序的效率,函数的参数多使用结构体类型指针 结构体变量整体引用举例 结构体变量整体引用举例 2. 结构体数组 结构体数组的用法与基本类型数组类似 定义、初始化、引用 结构体数组可用于表示二维表格 举例 结构体数组初始化及应用举例 结构体数组与二维表 3 指向结构体的指针 指向结构体的指针 定义、使用与其他基本类型指针类似 可以使用指向运算符(-)引用指针所指向的结构体的成员 指向运算符 - 结构体指针-成员名 具有最高的优先级,自左向右结合 若struct student stu, *p=stu; 则stu.num、 (*p).num、 p-num等效 指向结构体数组的指针 指向结构体数组的指针 与指向其他基本类型数组的指针用法类似 注意相关运算符的结合方向和优先级 举例 结构体指针作函数参数举例 【例】分配一块存储区域,输入一个学生数据。 main() { struct stu { int num; char *name; char sex; float score; } *ps; 4 结构体的应用—链表 链表的操作 链表的建立 从链尾到链头:新结点插入到链头 从链头到链尾:新结点插入到链尾 链表的遍历 删除结点 根据一定的条件,删除一个或多个结点 插入结点 根据一定的条件,把新结点插入到指定位置 建立链表 (从链尾到链头) 建立链表 (从链头到链尾) 遍历链表 删除结点 插入结点 链表操作中需要注意的几个问题 注意考虑几个特殊情况下的操作: 链表为空表 (head==NULL) 链表只有一个结点 对链表的第一个结点进行操作 对链表的最后一个结点进行操作 最后一个结点的next指针应为NULL 例 用指针变量输出结构数组 struct stu { int num; char *name; char sex; float score; }boy[5]={ {101,Zhou ping,M,45}, {102,Zhang ping,M,62.5}, {103,Liou fang,F,92.5},

文档评论(0)

jiupshaieuk12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档