4401: 【例7-5】交换两个变量的值
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:24
解决:12
题目描述
输入两个整数变量a和b,设计一个交换函数将其交换后再输出。注意:不能直接输出b和a。
样例输入 复制
1 2
样例输出 复制
2 1
提示
#include<bits/stdc++.h>
using namespace std;
void swap(int x,int y) {
int 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<bits/stdc++.h>
using namespace std;
void swap(int &x,int &y) {
int t=x;
x=y;
y=x;
}
int main(){
int a,b;
cin>>a>>b;
swap(a,b);
cout<<a<<" "<<b<<endl;
return 0;
}
在参数的变量名前面加上一个&符号,代表引用传参,相当于告诉swap()函数a和b这两个碗放在了什么地方,而不是直接把食材丢入机器中。如果这样,x就是a的别名,y就是b的别名,修改x和y的值,就会影响到a和b。
回想一下 scanf()函数,比如 scanf(“%d”,&n),这里加上&是一样的道理。将变量n的地址告诉给这个函数,这样才能让输入函数直到将读到的数据放入那个碗里。