资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
10.4 10.4 结构结构变量、结构指针作为函数变量、结构指针作为函数参数参数C C语言程序设计语言程序设计 第十章 结构体、共用体、枚举用结构体类型数据作为函数参数有以下三种形式:v用结构体变量的成员作参数 用法与普通变量作参数相同,值传递v用结构体变量作参数 函数的实参和形参必须都是结构体变量,程序效率低,开销大,不主张用v用结构体指针或结构体数组作参数 提高运行效率,还可以修改结构体指针所指向的结构体的内容。结构变量、结构指针作为函数参数例 用结构体变量作函数参数 struct data int a, b, c; main() void func(struct data);struct data arg;arg.a=27; arg.b=3; arg.c=30;printf(“a:%d, b:%d, c:%dn“,arg.a,arg.b,arg.c);func(arg);printf(“a:%d, b:%d, c:%dn“,arg.a,arg.b,arg.c); void func(struct data parm) printf(“parm.a:%d ,parm.b:%d , parm.c:%dn“,parm.a,parm.b,parm.c);parm.a=18; parm.b=5; parm.c=90;printf(“parm.a:%d ,parm.b:%d ,parm.c:%dn“,parm.a,parm.b,parm.c); 运行结果: a:27,b:3,c:30 parm.a:27,parmb:3,parm.c:30 parm.a:18,parmb:5,parm.c:90 a:27,b:3,c:30例 用结构体指针变量作函数参数 struct data int a, b, c; ; main() void func(struct data *parm);struct data arg;arg.a=27; arg.b=3; arg.c=30;printf(“a:%d b: %d c:%dn“,arg.a,arg.b,arg.c);func(printf(“a:%d b: %d c:%dn“,arg.a,arg.b,arg.c); void func(struct data *parm) printf(“a:%d b:%d c:%dn“,parm-a,parm-b,parm-c);parm-a=18; parm-b=5; parm-c=90;printf(“a:%d b:%d c:%dn“,parm-a,parm-b,parm-c); 运行结果: a:27 b:3 c:30 a:27 b:3 c:30 a:18 b:5 c:90 a:18 b:5 c:90结构体变量作为参数时,数据传递是“值传递方式”,如果结构参数包含的成 员有很多,那么在参数的传递过程中就需要花费很多时间和空间。 结构指针作为函数参数,可以通过被调函数中结构指针的移动(如p+)来 完成对主函数中多个结构数组元素的操作;而结构体变量作为函数参数,只 能完成对主函数中某一个结构数组元素的操作,要完成对多个结构数组元素 的操作,需要在主函数中循环调用以结构体变量作为参数的函数。综上所述,用结构体指针作为参数的效率更高,是更佳的选择。 结构体变量与结构指针作为函数参数的区别思考题:结构指针作为返回值的函数定义、调用方法与其他函数一样吗?下下一讲一讲共用体共用体谢谢谢谢 谢!谢!谢!谢!祝大家学习愉快!祝大家学习愉快!
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号