- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]C程序设计第9章 用户自己建立数据类型
9.3.3 用结构体变量和结构体变量的指针作函数参数 将一个结构体变量的值传递给另一个函数,有3个方法。 (1) 用结构体变量的成员作参数。 用法和用普通变量作实参是一样的,属于“值传递”方式。 应当注意实参与形参的类型保持一致。 (2) 用结构体变量作实参。 用结构体变量作实参时,将结构体变量所占的内存单元的内容全部按顺序传递给形参,形参也必须是同类型的结构体变量。 在函数调用期间形参也要占用内存单元。这种传递方式在空间和时间上开销较大。 在被调用函数期间改变形参(也是结构体变量)的值,不能返回主调函数。 一般较少用这种方法。 (3)用指向结构体变量(或数组元素)的指针作实参,将结构体变量(或数组元素)的地址传给形参。 例9.7 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)。 #include stdio.h #define N 3 struct student { int num;char name[20]; float score[3];float aver; }; void input(struct student stu[]); struct student max(struct student stu[]); void print(struct student stu); int main() { struct student stu[N],*p=stu; input(p); print(max(p)); return 0; } void input(struct student stu[]) { int i; printf(请输入各学生的信息:学号、姓名、三门课成绩:\n); for(i=0;iN;i++) { scanf(%d %s %f %f %f, stu[i].num,stu[i].name,stu[i].score[0], stu[i].score[1],stu[i].score[2]); stu[i].aver=(stu[i].score[0]+ stu[i].score[1]+stu[i].score[2])/3.0; } } struct student max(struct student stu[]) { int i,m=0; for(i=0;iN;i++) if (stu[i].averstu[m].aver) m=i; return stu[m]; } void print(struct student stud) { printf(\n成绩最高的学生是:\n); printf(学号:%d\n姓名:%s\n三门课成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.2f\n, stud.num,stud.name,stud.score[0], stud.score[1],stud.score[2],stud.aver); } 以上3个函数的调用,情况各不相同: 调用input函数时,实参是指针变量,形参是结构体数组,传递的是结构体元素的地址,函数无返回值。 调用max函数时,实参是指针变量,形参是结构体数组,传递的是结构体元素的地址,函数的返回值是结构体类型数据。 调用print函数时,实参是结构体变量,形参是结构体变量,传递的是结构体变量中各成员的值,函数无返回值。 9.4 用指针处理链表 9.4.1 什么是链表 9.4.2 建立简单的静态链表 9.4.3 建立动态链表 9.4.4 输出链表 9.4.1 什么是链表 链表是一种常见的重要的数据结构 它是动态地进行存储分配的一种结构 head 1249 1249 A 1356 1356 1475 B 1475 C 1021 1021 D \0 头指针 各结点地址不连续 各结点含有两个部分 表尾 struct Student { int num; float score; struct Student *next; }a,b,c; 10101 89.5 10103 90 10107 85 a结点 b结点 c结点 a.next=b; b.next=c; num score next 9.4.2 建立简单的静态链表 例9.8 建立一个如图所示的简单链表,它由3个学生数据的结点组成,要求输出各结点中的数据。 解题思路: head=a
您可能关注的文档
最近下载
- TZS 0678—2025《生物安全实验室工作人员本底血清样本管理规范》(水印版).pdf VIP
- 2025年工会基础知识考试题库及参考答案(通用版).pptx VIP
- 抗菌药物的合理使用课件(共37张PPT).pptx VIP
- 急危重症患者护理抢救流程与规范.pptx VIP
- 平衡梁组件的承压检测装置.pdf VIP
- 2025年最新工会基础知识考试题库及参考答案(通用版).pptx VIP
- 44-无机复合聚苯不燃保温板应用技术规程T_CIEEMA002-2020.pptx VIP
- 供货方案及质量保证措施 .docx VIP
- 殡葬领域突出问题专项整治行动实施方案.docx VIP
- T_ACEF 207—2025(工业有机废气收集系统技术规范).pdf
文档评论(0)