例:交换两个变量的值.输入两个整型变量a和b,设计一个交换函数将其交换后再输出.注意:不能直接输出b和a.
错误代码
#include<iostream>
using namespace std;
void swap(int x,int y) {
int t;
t=x ; x=y ; y=t;
}
int main() {
int a,b;
cin>>a>>b;
swap(a,b);
cout<<a<<" "<<b<<endl;
return 0;
}
经过测试,发现完全不起作用!这是因为在swap()函数中,x和y都是局部变量,所以怎么变都不会影响到外面.
正确代码
#include<iostream>
using namespace std;
void swap(int &x,int &y) {
int t;
t=x ; x=y ; y=t;
}
int main() {
int a,b;
cin>>a>>b;
swap(a,b);
cout<<a<<" "<<b<<endl;
return 0;
}
在参数的变量名前加上一个&符号,代表引用传参,相当于告诉swap()函数a和b这两个碗放在了什么地方,而不是直接把a和b中存的食材直接丢到机器加工.
这样一来,x就是a的别名,y就是b的别名,修改x和y的值,就会影响到a和b.
但实际上也可以简单一点…(那就继续往下读吧O(∩_∩)O哈哈~)
C++提供了一个swap函数用于交换,用法如下。
swap 包含在命名空间std 里面
用函数不用担心精度的损失
#include<iostream>
using namespace std;
int main()
{
float a = 3.123456,b = 1234567.000000;
swap(a,b);
cout<<fixed; //表示用一般的方式输出浮点数,而不是科学计数法
cout<<a<<"->"<<b<<endl;
return 0;
}
也可以交换字符串
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a ="666",b = "999";
swap(a,b);
cout<<a<<"->"<<b<<endl;
return 0;
}