首页 新闻 会员 周边 捐助

关于交换两个变量的值问题,,

0
悬赏园豆:5 [待解决问题]

void swap_int(int*a,int*b) { int temp=*a; *a=*b; *b=temp; }

void swap_str_yinyong(int& a,int&b) { int temp=a; a=b; b=temp; }

void swap_int_zhizhen(int*a,int *b) { int*temp=a; a=b; b=temp; }

请教为什么第三个函数不可以实现两个变量值的交换呢??既然不能实现变量值得交换,那第三个函数的作用是什么呢??

Jack-su的主页 Jack-su | 初学一级 | 园豆:116
提问于:2015-10-17 21:39
< >
分享
所有回答(3)
0

第三个中a,b都是地址,不是指针所指的值,相当于把指针的地址交换了,但指针所指的值没有交换。

模糊123 | 园豆:194 (初学一级) | 2015-10-17 22:18

你的意思是a,b两个变量的地址进行了交换吗??

可是结果却不太对呀??

main函数里面运行:

int e=1;
int f=2;
cout<<"未调用swap_int_zhizhen时:"<<endl;
cout<<endl;
cout<<" "<<"&e="<<&e<<" "<<"&f="<<&f<<endl;
cout<<endl;
swap_int_zhizhen(&e,&f);

cout<<"调用swap_int_zhizhen后:"<<endl;
cout<<endl;
cout<<" "<<"&e="<<&e<<" "<<"&f="<<&f<<endl;

打印结果如下

求解释。。。。。。

支持(0) 反对(1) Jack-su | 园豆:116 (初学一级) | 2015-10-17 22:37

@Jack-su: 搞错了。。。。。

支持(0) 反对(0) 模糊123 | 园豆:194 (初学一级) | 2015-10-17 22:54

第三个函数可以用吗,我这报错了

支持(0) 反对(0) 模糊123 | 园豆:194 (初学一级) | 2015-10-17 22:55

@模糊123: 第三个函数无法实现交换变量的功能

支持(0) 反对(0) Jack-su | 园豆:116 (初学一级) | 2015-10-18 09:54
0

函数调用时,是把地址copy一份进行操作,函数一通过copy的地址对原来的数值进行了交换,函数三只把copy的地址进行了交换,并没有对原来的数值进行操作。

hhboboy | 园豆:183 (初学一级) | 2015-10-17 23:26
0

第三个是交换了形参的值(指针),但是实参的值并不改变,所以没有任何作用。

黑桃七 | 园豆:268 (菜鸟二级) | 2015-10-18 12:44

传指针是为了改变指针指向的变量的值,而对形参本身进行交换,不影响实参指针,实参指向的变量的值不会改变,接分。

支持(0) 反对(0) 黑桃七 | 园豆:268 (菜鸟二级) | 2015-10-18 12:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册