2025年3月13日 星期四 甲辰(龙)年 月十二 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言结构体指针变量作函数参数

时间:01-03来源:作者:点击数:87

在ANSI C标准中允许用结构变量作函数参数进行整体传送。但是这种传送要将全部成员逐个传送,特别是成员为数组时将会使传送的时间和空间开销很大,严重地降低了程序的效率。因此最好的办法就是使用指针,即用指针变量作函数参数进行传送。这时由实参传向形参的只是地址,从而减少了时间和空间的开销。

【例11-7】计算一组学生的平均成绩和不及格人数。用结构指针变量作函数参数编程。

  • struct stu{
  • int num;
  • char *name;
  • char sex;
  • float score;
  • }boy[5]={
  • {101,"Li ping",'M',45},
  • {102,"Zhang ping",'M',62.5},
  • {103,"He fang",'F',92.5},
  • {104,"Cheng ling",'F',87},
  • {105,"Wang ming",'M',58}
  • };
  • main(){
  • struct stu *ps;
  • void ave(struct stu *ps);
  • ps=boy;
  • ave(ps);
  • }
  • void ave(struct stu *ps){
  • int c=0,i;
  • float ave,s=0;
  • for(i=0;i<5;i++,ps++){
  • s+=ps->score;
  • if(ps->score<60) c+=1;
  • }
  • printf("s=%f\n",s);
  • ave=s/5;
  • printf("average=%f\ncount=%d\n",ave,c);
  • }

本程序中定义了函数ave,其形参为结构指针变量ps。boy被定义为外部结构数组,因此在整个源程序中有效。在main函数中定义说明了结构指针变量ps,并把boy的首地址赋予它,使ps指向boy数组。然后以ps作实参调用函数ave。在函数ave中完成计算平均成绩和统计不及格人数的工作并输出结果。

由于本程序全部采用指针变量作运算和处理,故速度更快,程序效率更高。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门