首页 百科知识 结构指针变量作函数参数

结构指针变量作函数参数

时间:2022-10-03 百科知识 版权反馈
【摘要】:在ANSIC标准中,允许用结构变量作函数参数进行整体传送。但是这种传送要将全部成员逐个传送,特别是成员为数组时,将会使传送的时间和空间开销很大,严重地降低了程序的效率。boy被定义为外部结构数组,因此在整个源程序中有效。在main函数中定义说明了结构指针变量ps,并把boy的首地址赋予它,使ps指向boy数组。在函数ave中完成计算平均成绩和统计不及格人数的工作并输出结果。

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

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

structstu

{ intnum;

char*name;

charsex;

floatscore;}boy[5]={

{101,"Liping",'M',45},

{102,"Zhangping",'M',62.5},

{103,"Hefang",'F',92.5},

{104,"Chengling",'F',87},

{105,"Wangming",'M',58},

};

main()

{ structstu*ps;

voidave(structstu*ps);

ps=boy;

ave(ps);

voidave(structstu*ps)

{ intc=0,i;

floatave,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中完成计算平均成绩和统计不及格人数的工作并输出结果。

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

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈