|
发表于 2013-8-10 14:08:09
|
显示全部楼层
结构是可以作为参数也可以作为返回值的;你例子里面还用不上结构的返回。
数组的传参都是通过数组名即首元素的地址来进行,针对你的代码,给出下面的示例:- #include "stdio.h"
- typedef struct shangpin{
- char mingzi[10];
- short kucun;
- short jiage;
- }shangpin; //结构成员有三个~~~~
- shangpin *shuru(shangpin p[],int n) //输入函数
- {
- int i;
- puts("请输入十种商品的名字,价格和库存:");
- for (i=0;i<n;i++)
- {
- printf("输入第%d种商品的名字,价格和库存",i+1);
- scanf("%s%d%d",p[i].mingzi,&p[i].jiage,&p[i].kucun);
- }
- return p;
-
- }
- shangpin shuru1(shangpin p)
- {
- p.jiage+=50;
- return p;
-
- }
- void paixu(shangpin *x,int n) //传入这个函数中测试~~
- {
- int i;
- for (i=0;i<n;i++)
- {
- printf("测试:%s %d %d",(x+i)->mingzi,(x+i)->jiage,(x+i)->kucun);
- }
- }
- int main() //编译时N多的错误~~~
- {
- shangpin a[5],*x,y;
- x=shuru(a,5); //初始化a[5],同时将数组首元素地址(shangpin*类型)赋给x
- paixu(x,5); //注意看下paixu函数原型的写法
- paixu(a,5); //和上面那句的输出对比下看是否完全复制过去了
- a[0]=shuru1(a[1]); //a[1]作为参数,函数不改变a[1]价格,而将改变后的值赋给a[0]
- paixu(a,5); //通过输出验证下上面那句功能
- getch();
- return 0;
- }
复制代码 |
|