参考向量 我正在学习C++,我有问题要理解为什么它会起作用。我知道引用只是某个对象的同义词。但我不明白这是为什么 std::vector<int> v{1,2,3}; for (auto &i : v) //using reference i *= i;
输出参考向量 我正在学习C++,我有问题要理解为什么它会起作用。我知道引用只是某个对象的同义词。但我不明白这是为什么 std::vector<int> v{1,2,3}; for (auto &i : v) //using reference i *= i;,c++,reference,C++,Reference,输出1,2,3 提前谢谢你原因也一样: int a=2; int &b=a; b=3; 为什么最终将a设置为3,但是: int a=2; int b=a; b=3; a仍然是2,只有b是3 向量本身是不相关的,这与引用的基本概念有关。引用为被引用对象创建别名。“非引用”将创建一个新对象自动&i创建引用auto i创建一个新对象,并通过复制另一个对象的值来初始化它,在本例中,向量中的每个值。该引用实际上是对内存中某个对象的引用 因此,当您执行auto&i时,您将创建对对象的引用
1,2,3
提前谢谢你原因也一样:
int a=2;
int &b=a;
b=3;
为什么最终将a
设置为3,但是:
int a=2;
int b=a;
b=3;
a
仍然是2
,只有b
是3
向量本身是不相关的,这与引用的基本概念有关。引用为被引用对象创建别名。“非引用”将创建一个新对象<代码>自动&i创建引用
auto i
创建一个新对象,并通过复制另一个对象的值来初始化它,在本例中,向量中的每个值。该引用实际上是对内存中某个对象的引用
因此,当您执行auto&i
时,您将创建对对象的引用(在这种情况下,它是来自向量的元素)。
对被引用对象(即向量的元素)执行任何操作i*=i
更改元素的值,因为i
是对该元素的引用
当您执行autoi
时,您将创建一个新的变量(对象),该变量存储在堆栈上。该对象仅存在于for循环的范围内。因此,对其所做的更改不会影响任何其他数据
希望这有帮助。这回答了您的问题
int a=2;
int b=a;
b=3;