VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 698|回复: 3

[已解决] 求大神帮忙

[复制链接]
51_avatar_middle
在线会员 发表于 2016-2-10 12:37:02 | 显示全部楼层 |阅读模式
3驿站币
本帖最后由 gy无痕gy 于 2016-2-10 13:44 编辑

#include <iostream.h>
void swap(int a,int b);
int main()
{
        int x=8,y=10;
        int t=0;
        cout<<"x="<<x<<"   y="<<y<<endl;
        swap(x,y);
        cout<<"x="<<x<<"   y="<<y<<endl;
        cout<<"t in main is :"<<t<<endl;
        return 0;
}
void swap(int a,int b)
{
        int t;
        t=a;
        a=b;
        b=t;
        cout<<"t in swap is: "<<t<<endl;
}

结果
x=8   y=10                     
t in swap is: 8               
x=8   y=10                    
t in main is :0                  
Press any key to continue


没有实现数字交换  是怎么回事x仍然是8





上一篇:关于线程操作
下一篇:可以将几乎是任意大小的文件压缩至近乎任意的大小的压缩技术价值几何?
51_avatar_middle
ico_lz  楼主| 发表于 2016-2-10 13:40:45 | 显示全部楼层
main函数里调用:swap(x,y); 实参x复制给形参a,实参y复制给形参b,
swap(int a,int b)函数里,a和b交换,结束返回main函数后,根本没有影响x和y。
交换函数参数可以改成引用,其它都不变:
void swap(int &a,int &b);
这样形参a和实参x是同一个变量,形参b和实参y是同一个变量,就可以交换了。
交换函数参数也可以用指针:
void swap(int *a,int *b)
{
  int t;
  t=*a;
  *a=*b;
  *b=t;
}
main函数调用swap函数:swap(&x,&y); 把x和y变量的地址传给swap函数。
51_avatar_middle
online_admins 发表于 2016-2-16 16:12:49 | 显示全部楼层
gy无痕gy 发表于 2016-2-10 13:40
main函数里调用:swap(x,y); 实参x复制给形参a,实参y复制给形参b,
swap(int a,int b)函数里,a和b交换, ...

楼主自己分析的确实不错
49_avatar_middle
online_vip 发表于 2016-3-16 09:39:02 | 显示全部楼层
gy无痕gy 发表于 2016-2-10 13:40
main函数里调用:swap(x,y); 实参x复制给形参a,实参y复制给形参b,
swap(int a,int b)函数里,a和b交换, ...

函数的调用是在栈中进行的,就像客人住客栈一样的,如果把函数调用比做住酒店的话,那么形参就是客房里面的东西,比如客房里面的毛巾,两个客人互换里面的毛巾,对客人没有起到任何改变,只不过是形参自己改变了属性,但是传引用的话调用函数就相当于客人在屋子里面互换口袋里面的钱, t=*a这个相当于把a的钱放到抽屉里,*a=*b;相当于把b口袋的钱放到a口袋, *b=t;把抽屉的钱放到b口袋,也就是说传引用相当于在函数调用时传入了两个客人的口袋,口袋就是地址,口袋里面装的东西换了,取出来的值也就相应的改变了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-23 03:54

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表