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