C语言,不是值传递么?怎么结果还是子函数里的值

 我来答
White_MouseYBZ
2016-01-27 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6693万
展开全部
fun函数返回的是结构体变量,带回了子函数中结构体变量的当前值。“传值”是指实参传给形参时只是“值”的拷贝,子函数中的变量与主调函数中的变量无关,并不指函数的“返回值”;如果函数的返回值不可更改,还要函数返回值干啥……
更多追问追答
追问
也就是说,这里根本就不是传值,实参的值(0,A)根本就没有传递给形参,子函数把结构里的(99,S)传递给实参,导致重新覆盖了之前的值,第二次输出的值得以改变,是么
追答
尽管你已采纳了别人,但还想说两句。怎么叫“根本没有传值”?那y=fun(y);中的()中的y是干什么的?它把结构体变量y的所有成员值对应传给形参x的对应成员。函数中x的成员的值改变后是在函数中的局部变量x结构体中放着,最后return x;又把这个局部结构体的成员值对应赋给了y,因而改变了主调函数中结构体变量y的成员值……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
胡大狼333
2016-01-27
知道答主
回答量:42
采纳率:0%
帮助的人:17.7万
展开全部
结果是对的啊,y被重新赋值了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杪清千吾5487
2016-01-27 · TA获得超过444个赞
知道答主
回答量:163
采纳率:0%
帮助的人:49.3万
展开全部
第二次printf之前运行fun函数又对y进行了赋值,与之前的值无关
追问
可是我记得只有指针的地址传递才能改变值啊,这里是地址传递么?值传递不是不改变值么
追答
这是调用函数...不是改变值,而是直接赋值
过程是:先赋值y的两个数,显示,将这两个数重新赋值,显示
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式