尽管一切看起来都很好,但不会交换值
Despite everything looks fine, values are not swapped
我想写一个函数来交换两个整数。尽管一切看起来都很好,但没有交换值。
这是我的代码:
#include <iostream>
using namespace std;
void mySwap(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int a = 5, b = 4;
mySwap(a, b);
cout << a << ' ' << b << endl;
return 0;
}
Output: 5 4
请帮助我了解原因。感谢任何帮助。
您正在复制参数 a
和 b
。将它们更改为参考。
void mySwap(int & a, int & b)
您现在正在做的是交换变量的本地副本而不是实际变量。
要修复它,您需要做的是稍微更改您的函数(只需添加 &,这会使它引用变量而不是创建它们的本地副本)
void mySwap(int &a, int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
要直接使用在 main()
中作为参数传递的值进行操作,请使用引用(后跟 & 符号 &
),如下所示:
#include <iostream>
void mySwap(int& a, int& b) // using reference here
{
int temp; // remove for alternative option described at the bottom
temp = a; // a = a + b;
a = b; // b = a - b;
b = temp; // a = a - b;
}
int main(void)
{
int a = 5, b = 4;
mySwap(a, b); // passed 5, 4 and original values are manipulated.
std::cout << a << ' ' << b << std::endl;
return 0;
}
一旦您将变量作为函数参数传递,它最初也会发生变化。
相反,如果你不使用它,程序只会创建两个只在函数内部可见的局部变量,然后即使交换它们也不会成功。
另一种在两个变量之间交换的方法(没有临时变量):
a = a + b;
b = a - b;
a = a - b;
我想写一个函数来交换两个整数。尽管一切看起来都很好,但没有交换值。
这是我的代码:
#include <iostream>
using namespace std;
void mySwap(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int a = 5, b = 4;
mySwap(a, b);
cout << a << ' ' << b << endl;
return 0;
}
Output: 5 4
请帮助我了解原因。感谢任何帮助。
您正在复制参数 a
和 b
。将它们更改为参考。
void mySwap(int & a, int & b)
您现在正在做的是交换变量的本地副本而不是实际变量。
要修复它,您需要做的是稍微更改您的函数(只需添加 &,这会使它引用变量而不是创建它们的本地副本)
void mySwap(int &a, int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
要直接使用在 main()
中作为参数传递的值进行操作,请使用引用(后跟 & 符号 &
),如下所示:
#include <iostream>
void mySwap(int& a, int& b) // using reference here
{
int temp; // remove for alternative option described at the bottom
temp = a; // a = a + b;
a = b; // b = a - b;
b = temp; // a = a - b;
}
int main(void)
{
int a = 5, b = 4;
mySwap(a, b); // passed 5, 4 and original values are manipulated.
std::cout << a << ' ' << b << std::endl;
return 0;
}
一旦您将变量作为函数参数传递,它最初也会发生变化。
相反,如果你不使用它,程序只会创建两个只在函数内部可见的局部变量,然后即使交换它们也不会成功。
另一种在两个变量之间交换的方法(没有临时变量):
a = a + b;
b = a - b;
a = a - b;