正在加载图片...
ps=boy;(赋予数组首地址) 或者是: ps=&boy[0];(赋予0号元素首地址) 1173结构指针变量作函数参数 在 ANSIC标准中允许用结构变量作函数参数进行整体传送。但是这种传送要将全部成员 逐个传送,特别是成员为数组时将会使传送的时间和空间开销很大,严重地降低了程序的效 率。因此最好的办法就是使用指针,即用指针变量作函数参数进行传送。这时由实参传向形 参的只是地址,从而减少了时间和空间的开销 【例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}, maino struct stu * ps void ave (struct stu *ps) ave(ps void ave(struct stu *ps) Int c=o, i float ave s=0 for(i=0;i<5;i++,ps++) +=ps->score f(ps->score<60)c+=l printf("s=%f\n", s) ave-s printf("average=%f\ncount=%d\n", ave, c)ps=boy;(赋予数组首地址) 或者是: ps=&boy[0];(赋予 0 号元素首地址) 11.7.3 结构指针变量作函数参数 在 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); }
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有