typedef struct{char name[9];char sex ; int score[2];}stu;

stuf(stua){stub={"zhao",'m',85,90};inti;strcpy(a.name,b.name);a,sex=b,sex;for(i=0;i<2... stu f(stu a)
{stu b={"zhao",'m',85,90}; int i;strcpy(a.name,b.name);a,sex=b,sex;for(i=0;i<2;i++) a.score[i]=b.score[i];return a;}
main()
{stu e={"qian",'f',95,92};a=f(e);
printf("%s%c%c%d",d.name,d.sex,d.score[0],d.score[1]);
printf("%s%c%c%d",e.name,e.sex,e.score[0],e.score[1]);}
答案是什么 求解释结构体构造的函数和一般函数有什么区别 还有结构体构造的函数里面的形参数组改变,实参为什么不变 我是新手希望高手能耐心赐教
展开
 我来答
L_o_o_n_i_e
2012-03-22 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5091万
展开全部
上面程序有些地方大概抄错了,更正了一下。
typedef struct{char name[9];char sex ; int score[2];} stu;
stu f(stu a){
stu b={"zhao",'m',85,90};
int i;
strcpy(a.name,b.name);
a.sex=b.sex;
for(i=0;i<2;i++) a.score[i]=b.score[i];
return a;
}
main()
{stu e={"qian",'f',95,92},d=f(e);
printf("%s %c %d %d\n",d.name,d.sex,d.score[0],d.score[1]);
printf("%s %c %d %d",e.name,e.sex,e.score[0],e.score[1]);
}
函数调用是 d=f(e); d 接收到的是函数里 return a; 的当时值,a值来自b={"zhao",'m',85,90}; 的赋值a,sex=b,sex;a.score[i]=b.score[i]。。。通过 d 打印出来。

f(e) 的 e 不是指针,所以数值可以由e传入函数,而加工后的值不能通过参数e 带回来。
所以,打印语句打出的还是 e={"qian",'f',95,92},
更多追问追答
追问
不明白 形参不是不能给实参传递数值吗
追答
“形参不是不能给实参传递数值吗”-- 你没有分清什么是形参,什么是实参。

函数声明(定义)时书写的参数叫形参。
函数调用时,书写的参数叫实参。
实参个数和类型 与 形参 一一对应。
只有 形参 是 指针 的 这个对应 位子 上 的实参,才可能带回 加工结果。
形参 不是指针 的 这个对应 位子 上 的实参, 只能把值带入 函数,而不能 把加工结果带出(带回到调用语句所在处)。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式