gpt4 book ai didi

c++ - 按值传递变量与按引用传递变量具有相同的结果

转载 作者:行者123 更新时间:2023-12-02 06:48:42 25 4
gpt4 key购买 nike

#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> arr {12,13,14,15,16};
for (auto & x: arr)
{
++x;
cout << x << " ";
}

return 0;
}

VS

#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> arr {12,13,14,15,16};
for (auto x: arr)
{
++x;
cout << x << " ";
}

return 0;
}

输出保持不变,我们将 vector 中的每个值递增 1。但我的教科书是这么说的。 Text Book Image当我的教科书说“x 假设 vector 中每个值的拷贝”时,这是什么意思?

这是屏幕截图中的代码输出 Code Output第一个输出是 &第二个输出不带&

最佳答案

The output remains the same

如果您删除引用 (&),您只会传递 x 的值,而不是 x 本身,因此,如果您有代码以任何方式更改 x ,您需要像在第一个示例中那样通过引用传递它,否则您只是更改局部变量,而不是原始变量。

打印的值是相同的,因为在第一个示例中,您正在递增变量并打印它,在第二个示例中,您正在打印局部变量(女巫只是一个拷贝),但也在递增。

因此,如果您再次打印 vector ,您会发现没有引用的版本并未更改它。如您所见HERE

关于c++ - 按值传递变量与按引用传递变量具有相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59800127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com