lec7结构体.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
lec7结构体

C语言程序设计 Lec 7 结构体 引言 复杂数据的表示 求下图所示的折线长度 折线长度=多条线段长度之和 求线段长度的公式: 可以利用循环完成求和 每个点的坐标可以用数组存储 复杂数据的表示 用函数实现公式:line_len = 复杂数据的表示 假设一个学生信息包括姓名、学号、成绩,将n个学生的信息,按成绩排序后输出 解决方法1:用三个数组分别存放姓名,学号,成绩,对成绩排序,排序中需要交换两个成绩时要同时交换对应的姓名和学号 解决方法2:将每个学生的三个信息作为一个整体,然后根据成绩排序,交换时将学生信息作为整体交换 结构体 多个信息组合成的一个逻辑整体 每个信息称为结构体的一个成员 每个成员都有类型和名称 类型可以是基本类型也可以是数组类型、结构体类型或指针类型,甚至指向当前结构体类型 主要内容 7.1 结构体定义与使用 7.2 结构体与函数 7.1 结构体定义与使用 结构体声明 声明每个成员 声明结构体名称 定义结构体变量 方法1:定义结构体时声明变量 定义结构体变量 方法2:在程序其他地方声明变量 定义结构体变量 方法3:先用typedef将结构体定义为一个简单名称,然后用该名称来定义变量 结构体嵌套 结构体定义可以嵌套,但不能引用正在定义的结构体自身(指针方式引用除外) 结构体成员访问 用圆点运算符(.)可以访问结构体的每个成员 格式:结构体变量.成员名称 结构体在内存中的存储形式 按定义顺序依次存储每个成员(byte_allign.c) 结构体在内存中的存储形式 结构体变量初始化 方法1:定义结构体变量后,逐一初始化每个成员 结构体变量初始化 方法2:在定义结构体变量时初始化各个成员,各个成员的初始值用逗号分隔,未赋予初值的成员被初始化为0值 结构体变量整体赋值(struct_assign.c) 可以用赋值运算符(=)将一个结构体变量的值整体赋值给另一个结构体变量 赋值方式是将一个结构体变量的每个成员依次复制给另一个结构体成员 如果成员是基本类型,按值复制 如果成员是数组,数组内容会被复制 如果成员是指针,复制指针值(地址),导致两个结构体变量的成员指向同一块内存 结构体指针变量 定义结构体类型的指针变量 格式:结构体类型 *指针变量名 结构体指针变量 引用结构体类型指针变量的成员 方法1:先用间接运算符(*)取得结构体,再用成员运算符(.)访问成员 方法2:直接用专用运算符-取得结构体类型指针变量的成员 7.2 结构体与函数 结构体类型作为函数返回值 可以返回一个逻辑整体(相当于返回多个值) 结构体类型返回值可以整体赋值给其他结构体变量 结构体类型作为函数形式参数 非指针形式的结构体类型参数传递时按值传递,即将实参结构体整体赋值给形参,在函数体内对结构体成员的修改不会保留 指针形式的结构体类型参数传递时,实参和形参指向同一结构体,在函数体内对结构体成员的修改可以保留 结构体类型作为函数形式参数 示例 假设一个学生的信息包括姓名、学号、成绩,按学号依次给出n个学生的信息,要求按成绩排序后输出学生信息 step1:输入学生信息 step2:按成绩排序 step3:输出学生信息 输入/输出学生信息 按成绩排序 主函数 练习 求下图所示的折线长度 用结构体存储每个点坐标 求折线段长度用函数完成 小结 结构体的作用 结构体定义 引用结构体成员的方法 结构体与函数 作为函数返回值 作为函数参数 int main(){ student_t students[100]; int count=0; count=input(students); sort(students, count); output(students,count); return 0; } y x (0,1) (2,2) (3,2) (4,1) (6,1) *西安电子科技大学计算机学院 * y x (0,1) (2,2) (3,2) (4,1) (6,1) double line_len( double x1, double y1, double x2, double y2) { return sqrt( (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2) ); } 如果希望线段端点坐标作为一个整体传入函数,参数应该是什么类型? double line_len( point_type pt1, point_type pt2){ } 使用结构体将多个信息组合为一个整体 struct student_t{ char id[10]; char name[20]; double

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档