结构体指针作为函数参数
发布时间:2023-05-18 13:50:58 所属栏目:语言 来源:
导读:结构体变量名代表的是整个集合本身,作为函数参数时传递的整个集合,也就是所有成员,而不是像数组一样被编译器转换成一个指针。如果结构体成员较多,尤其是成员为数组时,传送的时间和空间开销会很大,影响程序的运
结构体变量名代表的是整个集合本身,作为函数参数时传递的整个集合,也就是所有成员,而不是像数组一样被编译器转换成一个指针。如果结构体成员较多,尤其是成员为数组时,传送的时间和空间开销会很大,影响程序的运行效率。所以最好的办法就是使用结构体指针,这时由实参传向形参的只是一个地址,非常快速。 【示例】计算全班学生的总成绩、平均成绩和以及 140 分以下的人数。 #include <stdio.h> struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩 }stus[] = { {"Li ping", 5, 18, 'C', 145.0}, {"Zhang ping", 4, 19, 'A', 130.5}, {"He fang", 1, 18, 'A', 148.5}, {"Cheng ling", 2, 17, 'F', 139.0}, {"Wang ming", 3, 17, 'B', 144.5} }; void average(struct stu *ps, int len); int main(){ int len = sizeof(stus) / sizeof(struct stu); average(stus, len); return 0; } void average(struct stu *ps, int len){ int i, num_140 = 0; float average, sum = 0; for(i=0; i<len; i++){ sum += (ps + i) -> score; if((ps + i)->score < 140) num_140++; } printf("sum=%.2f\naverage=%.2f\nnum_140=%d\n", sum, sum/5, num_140); } 运行结果: sum=707.50 average=141.50 num_140=2 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |