重庆工商大学程序设计基础(C语言)课件第五章 结构体共用体枚举.pptVIP

重庆工商大学程序设计基础(C语言)课件第五章 结构体共用体枚举.ppt

  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文档。上传文档
查看更多
指向结构体数组的指针 例如,设ps 为指向结构体数组的指针变量,则ps 也指向该结构体数组的0 号元素,ps+1 指向1 号元素,ps+i 则指向i 号元素。这与普通数组的情况是一致的。 存放结构体数组元素地址的变量,称为指向结构体数组的指针变量,其值有两种情况: 指向结构体数组元素的指针:该结构体数组元素的地址 指向结构体数组的指针:整个结构体数组的首地址 结 构 体 例5.6用指针变量输出结构体数组。 struct student {int num; char *name; char sex; float score; }stu[5]={{101,Zhou ping,M,45},{102,Zhang ping,M,62.5}, {103,Liu fang,F,92.5},{104,Cheng ling,F,87}, {105,Wang ming,M,58}}; 结 构 体 main() { struct student *ps; printf(No\tName\t\t\tSex\tScore\t\n); for(ps=stu;psstu+5;ps++) printf(%d\t%s\t\t%c\t%f\t\n,ps-num,ps-name,ps-sex,ps-score); } 结 构 体 用结构体变量和指向结构体的指针作函数参数 用结构体变量的成员作参数。 用结构体变量作参数 用指向结构体变量(数组)的指针作为参数 例如,用stu[1].num或stu[2].name作函数实参,将实参值传递给形参。用法和用普通变量做实参是一样的,属于“值传递”方式。应当注意实参和形参的类型保持一致。 要求实参和形参是结构体变量,参数传递也是“值传递” 参数传递的是结构体变量(或数组)的地址,即“址传递”。 例5.7 与例5.3 相同,计算一组学生的平均成绩和不及格人数。求平均成绩和不及格人数用函数实现,主程序调用该函数。 struct student {int num; char *name; char sex; float score; }stu[5]={{101,Zhou ping,M,45},{102,Zhang ping,M,62.5}, {103,Liu fang,F,92.5},{104,Cheng ling,F,87}, {105,Wang ming,M,58}}; 结 构 体 main() { void ave(struct student stu[],int n); ave(stu,5); } 例5.7 与例5.3 相同,计算一组学生的平均成绩和不及格人数。求平均成绩和不及格人数用函数实现,主程序调用该函数(续)。 /*定义求平均成绩和不及格人数的函数ave()*/ 结 构 体 void ave(struct student stu[],int n) { int c=0,i; float ave,s=0; for(i=0;in;i++) { s+=stu[i].score; if stu[i].score60) c+=1; } printf(s=%f\n,s); ave=s/5; printf(average=%f\ncount=%d\n,ave,c); } 思考:将题改用指向结构体变量的指针作实参。可以在上面程序的基础上作少量修改即可。 例5.8将上题改用指向结构体变量的指针作实参。可以在上面程序的基础上作少量修改即可。 struct student {int num; char *name; char sex; float score; }stu[5]={{101,Zhou ping,M,45},{102,Zhang ping,M,62.5}, {103,Liu fang,F,92.5},{104,Cheng ling,F,87}, {105,Wang ming,M,58}}; 结 构 体 main() { void ave(struct student *ps); ave(stu); } 结 构 体 void ave(struct student *ps) { int c=0,i; float ave,s=0; for(i=0;i5;i++,ps++) { s+=ps-score; if(ps-score60) c+=1; } printf(s=%f\n,s); ave=s/5; printf(average=%f\ncount=%d\n,ave,c); } 为什么需要动态存储管理 C 语言的动态存储管理机制 (1)存储分配函数malloc 调用形式: void *malloc(

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档