大一c语言题目,形参实参与指针的问题

为什么两个运行结果不同。... 为什么两个运行结果不同。 展开
 我来答
hellojju
2014-12-27 · TA获得超过1662个赞
知道答主
回答量:44
采纳率:100%
帮助的人:25.5万
展开全部
首先理解值传递和地址传递的区别。

第二个程序就是值传递。实参a的值传给形参x,实参b的值传给形参y。这里的x与a只是值相等了,但是两个不同的内存单元。好比一班和二班两位同学,只是名字都叫张三,却是两个不同的人。同理,b和y也类似于一班和二班另两位同学,只是名字都叫李四,却是不同的两人。在swap函数中,只是对x和y操作,类似于只是二班的张三和李四发生了点变化。他们的变化是不会影响一班的张三和李四的。所以x和y的变化不会影响a和b。因为这是四个不同的内存单元。

第一个程序是地址传递。实参&a(a的地址)传给形参x,实参&b(b的地址)传给形参y。这样的话,x就指向了a,y也指向了b。代码中temp=*x;就等价于temp=a;了。 同理,*x=*y; 等价于a=b; *y=temp;等价于b=temp; 。这里对*x和*y操作,实际上就是对a和b的操作。所以会影响a和b的值。
百度网友8f74ff6
2014-12-27 · TA获得超过1910个赞
知道大有可为答主
回答量:1533
采纳率:0%
帮助的人:1583万
展开全部
函数形参一定要传递地址,调用过程中改变形参的值,不会影响实参变量本身,实参变量保持值不变,下面的写法输出的形参值不会改变。上面写法形参值改变实参。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风雷九州
推荐于2018-05-04 · TA获得超过3024个赞
知道大有可为答主
回答量:1127
采纳率:100%
帮助的人:406万
展开全部
C语言使用的是值传递,仅仅将实参的值传递给形参。

对于第一种写法
main函数传递给Swap函数的是&a和&b的值,即a和b所在的地址的值
那么Swap函数里面通过*x来更改的就是&a所在的地址里面的值,也就是a本身的值了,所以第一种写法main函数调用Swap函数之后,a和b的值会发生互换。

对于第二种写法
main函数传递给Swap函数的是a和b的值,即只是将15和8传递给了Swap函数
那么Swap函数里面更改15和8,和main函数的a和b没有啥关系的,所以第二种写法main函数调用Swap函数之后,a和b的值不会发生互换。Swap函数只是更改了x和y的值,对a和b没有什么影响

这就是C语言参数的值传递的奇妙之处了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MeepoMiracle
2014-12-27 · TA获得超过161个赞
知道小有建树答主
回答量:246
采纳率:0%
帮助的人:136万
展开全部
第二个交换了x和y,对a和b没有影响,因为形参和实参的内存地址是不一样的
第一个交换了a和b的地址所指向的内容,所以交换有效
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式