为什么我的值不会交换?
Why won't my values swap?
我应该编写一个函数名称double_swap,它将两个双精度作为参数并交换存储在这些参数中的值。该函数不应返回任何值,所以我知道这意味着它必须是一个 void 函数。
例如,如果执行以下代码片段,
int main()
{
double x = 4.8, y = 0.7;
double_swap(x,y);
cout<<"x = "<<x<<" y = "<<y;
}
输出将是:x = 0.7 y = 4.8
我编写的程序没有交换值。如果有人能指出我的错误,我将不胜感激。
#include <iostream>
using namespace std;
void double_swap(double x, double y)
{
x = 1.9;
y = 4.2;
}
int main()
{
double x = 4.2, y = 1.9;
double_swap(x,y);
cout<<"x = "<<x<<" y = "<<y<<endl;
return 0;
}
您需要通过引用传递变量,以便将函数中的修改应用于调用站点中的变量。 就像现在一样,您所做的只是修改一旦功能结束就会被销毁的副本。
改变
void double_swap(double x, double y)
自
void double_swap(double& x, double& y)
此外,与其硬编码值,不如使用
void double_swap(double& x, double& y)
{
double temp = x;
x = y;
y = temp;
}
您也可以为此使用函数参数的指针,但随后您的调用站点必须更改为double_swap(&x,&y);
并且您必须记住引用函数中的指针。
与其做所有这些,不如我们只使用std::swap
让它为我们做这件事。
在c++中调用函数时,有3种方式可以传递参数。第一个是通过复制,它只复制参数中的变量,然后删除它们。
void double_swap(double x, double y)
第二个是通过引用,其中参数引用真正的变量(你想要什么)。
void double_swap(double& x, double& y)
最后一个是按地址传递变量地址。
void double_swap(double* x, double* y)
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 我的字符计数代码计算错误.为什么
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- cmake在我的项目中所需的所有静态库都不成功
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 为什么我的for循环不能正确获取argv
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- 为什么当我做复制和交换习语时不调用我的复制构造函数?
- 为什么只有当我的容器有超过 32 个元素时才由 std::sort 调用交换?
- 为什么我的交换<字符串,字符串>比标准版本慢得多?
- 无需先声明函数,我可以交换变量的值
- 如何测试我的FIX客户端?有没有一个假的FIX交换,我可以使用
- 为什么我的值不会交换?
- 我的按位交换不起作用
- 我的“交换”过载应该被使用吗?这是一个libstdc++(GCC)错误吗
- 如何为我的类提供交换函数
- 为什么我的交换方法会干扰make_move_iterator
- 我的双链表交换函数有什么问题吗?