# include <iostream.h> void swap(int a,int b) { temp=a; a=b; b=temp; } int main() { int i=3,j=
答案:5 悬赏:70 手机版
解决时间 2021-04-08 23:40
- 提问者网友:我没有何以琛的痴心不悔
- 2021-04-08 13:07
# include <iostream.h> void swap(int a,int b) { temp=a; a=b; b=temp; } int main() { int i=3,j=5;
最佳答案
- 五星知识达人网友:往事隔山水
- 2021-04-08 14:09
这个是C语言教材里讲指针基本会遇到的问题,是因为调用swap(i,j)将i和j的值交给了swap的局部变量a和b,交换的只是a和b的值。i和j不会变的。
举个例子你就明白了。你和同学一起做一张卷子,他让你给他抄下,你把卷子给了他,相当于你传值给函数,你同学拿去后自己抄下来到他的卷子上,他对他的卷子做任何修改都不会改变你自己的卷子。
如果用指针或者引用就不一样,你是直接把卷子给你同学,他直接在你卷子上面改,他改了当然就影响到你原来的样子了。差不多是这个道理。追问你的意思是 i和j是我的卷子,a和b是同学的卷子如果程序要求输出a和b,那么输出的值就是a=5,b=3,是这个意思么?追答你的意思理解对了。但是有一点要说明的是:如果你在main主函数里面输出a和b的话是不行的,因为这是swap函数的局部变量,swap函数调用完毕a和b就消失了。要输出除非在swap函数里输出。
如果你要达到预期交换的目的,并且在主函数里面输出交换后的值的话,就不要传值,而是传指针或者用引用。
举个例子你就明白了。你和同学一起做一张卷子,他让你给他抄下,你把卷子给了他,相当于你传值给函数,你同学拿去后自己抄下来到他的卷子上,他对他的卷子做任何修改都不会改变你自己的卷子。
如果用指针或者引用就不一样,你是直接把卷子给你同学,他直接在你卷子上面改,他改了当然就影响到你原来的样子了。差不多是这个道理。追问你的意思是 i和j是我的卷子,a和b是同学的卷子如果程序要求输出a和b,那么输出的值就是a=5,b=3,是这个意思么?追答你的意思理解对了。但是有一点要说明的是:如果你在main主函数里面输出a和b的话是不行的,因为这是swap函数的局部变量,swap函数调用完毕a和b就消失了。要输出除非在swap函数里输出。
如果你要达到预期交换的目的,并且在主函数里面输出交换后的值的话,就不要传值,而是传指针或者用引用。
全部回答
- 1楼网友:北方的南先生
- 2021-04-08 17:16
swap(i,j);的作用是交换i,j的值
- 2楼网友:鱼芗
- 2021-04-08 17:09
轩辕O之风的解释很形象,用个用指针才能真正交换值。
- 3楼网友:一秋
- 2021-04-08 15:42
swap函数的参数是值形参,执行swap(i,j)之后是把i赋值给a,j赋值给b,过后i,j与a、b就没有任何关系了,所以swap函数体执行的只是a与b的值的调换,并没有i与j值调换的效果。要想实现i与j调换,就要使用引用形参,即void swap(int&a,int&b),使用引用形参的效果是a是i的另一个名字,b是j的另一个名字,也就是说a就是i,b就是j!
- 4楼网友:洎扰庸人
- 2021-04-08 14:58
传值了。main()中的i和j不会受到影响,因为你传给swap()的是i和j的副本,而不是它们本身。
可以修改为
swap(&i, &j)这样就可以按照传地址方式使用了。
可以修改为
swap(&i, &j)这样就可以按照传地址方式使用了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯