c语言实参和形参的传递问题

为什么有时候是单向,有时候是双向?第一题:#include<stdio.h>typedefstruct{intnum;doubles;}REC;voidfunl(RECx... 为什么有时候是单向,有时候是双向?
第一题:
#include <stdio.h>
typedef struct
{ int num;double s;}REC;
void funl(REC x) {x.num=23;x.s=88.5;}
main()
{ REC a={16,90.0);
fun1(a);
printf("%d\n",a.num);
}
程序运行后的输出结果是__【14】__。
参考答案:16
第二题:
#include<stdio.h>
#include<string.h>
struct A
{ int a;char b[10];double c;};
struct A f(struct A t);
main()
{ struct A a={1001,"ZhangDa",1098.0);
a=f(a); printf("%d,%s,%6.1f\n",a.a,a.b,a.c);
}
struct A f(struct A t)
{ t.a=1002;strcpy(t.b,"changRong");t.c=1202.0;return t;}
程序运行后的输出结果是________。
A)1001,ZhangDa,1098.0
B)1002,ZhangDa,1202.0
C)1001,ChangRong,1098.0
D)1002,ChangRong,1202.0
参考答案:D

第一题为什么是单向的传递,不能传回,而第二题能够传回?求解答
展开
 我来答
gui_happy
2012-09-20 · TA获得超过2090个赞
知道大有可为答主
回答量:4276
采纳率:42%
帮助的人:2884万
展开全部
在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两
个不同的内存单元。在函数调用时发生的值传送是把实参变量的值赋予形参变量,所进行的值是单向的,即只能从实参传向形参,不能从形参传回实参

第二结构体中有数组元素,即数组名作为函数参数时所进的传递只是地址的传递,,实际上形参数组和实参数组都为同一数组,共同拥有一段内存空间,因此,形参改变,实参也跟着改变。
frankxieke
2012-09-20 · 计算机专业相关文档分享
frankxieke
采纳数:104 获赞数:253

向TA提问 私信TA
展开全部
  1. 第一个题目void funl(REC x) {x.num=23;x.s=88.5;}也没有让返回什么啊

    这是个实参传入,并不改变传入参数的各个变量

  2. 第二个题目同样传入的是个实参,并不改变原来的结构体a的值,

    但是由于struct A f(struct A t)的返回值是个结构体,并将该结构体又重新赋值给了a--->a=f(a);

    才导致了结构体a的值发生了变化。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓦然prince
2012-09-20 · TA获得超过255个赞
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:105万
展开全部
同学你好;
我看了你的 问题,这个问题中有个关键 地方你没明白,就是第一题中
fun1(a);是类外函数,而第二题中
struct A f(struct A t);类中的成员函数;
成员数中有个默认的this指针,当对象调用这个函数时,就将对象的地址传给了这个函数的
this指针所以函数在执行对对象中数据操作时就直接修改了对象原有 的 数据
但是第一个函数不是类中的成员函数,
执行 fun1(a);时只是将a 的数据复制了一份在复制的上面操作,而a中的数据没有因此而改变

希望你能理解,有疑问可以hi我,希望你能采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhenzhen9310
2012-09-20
知道答主
回答量:14
采纳率:0%
帮助的人:6.7万
展开全部
第一个根本就运行不了。单向传递的是数值,双向传递的是地址。如果传递的是数值,要想返回,得用return语句。在c++里还有引用的概念。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
returnDC
2012-09-20 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:246
采纳率:0%
帮助的人:125万
展开全部
什么跟什么...什么单向双向的,第一题没返回值,第二题有返回值,是不是这个问题,你可以去华夏联盟问问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式