结构变量可以作为函数参数进行整体传递。传送过程:全部成员逐个传递。指针变量作函数参数进行传递。则实参传向形参的只是地址,从而减少了时间和空间的开销。
用结构指针变量作函数参数编程。
#include #define STU struct stu void ave(struct stu *ps); STU //stu结构名 { int num; char *name; char sex; float score; }boy[5]={ {101,"Zhou ping",'M',45}, {102,"Zhang ping",'M',62.5}, {103,"Liou fang",'F',92.5}, {104,"Cheng ling",'F',87}, {105,"Wang ming",'M',58}, }; //boy[5]是结构数组,该结构数组是stu类型。对结构数组赋初值。 int main() { struct stu *ps; //ps结构指针变量,指向boy[]结构数组的首地址。 ps=boy; ave(ps); //ps作实参调用函数ave,完成计算。 } void ave(struct stu *ps) { int c=0,i; float ave,s=0; //s总分,ave平均分 for(i=0;i<5;i++,ps++) //ps++不能掉,不然在boy[1]循环5次。 { s+=ps->score; if(ps->score<60) c+=1; //c不及格人数 } printf("s=%fn",s); ave=s/5; printf("average=%fncount=%dn",ave,c); } 形参是指针变量ps,boy被定义为外部结构数组,整个源程序有效。