问题描述:写了交换数字的函数,但是无法实现数字交换。
#include <iostream>
using namespace std;
void change(int a,int b);
int main() {
int a = 0;
int b = 0;
cin >> a;
cin >> b;
change(a,b);
cout << a << " " << b << endl;
return 0;
}
//下面函数出错
void change(int a,int b)
{
int t;
t = a;
a = b;
b = t;
}
原因:
单纯交换值是行不通的,可通过交换地址实现传参。
解决方法:
对于交换类问题,单纯交换值是行不通的,得交换地址。
#include <iostream>
using namespace std;
void change(int *a,int *b);
int main() {
int a = 0;
int b = 0;
cin >> a;
cin >> b;
//write your code here.......
change(&a,&b);
cout << a << " " << b << endl;
return 0;
}
void change(int *a,int *b)
{
int t;
t = *a;
*a = *b;
*b = t;
}