【发布时间】:2020-12-07 06:27:24
【问题描述】:
我无法理解这两个代码之间的区别,因为它们给了我相同的输出?
void print() {
int v[] = {0,1,2,3,4,5};
for(auto x : v)
cout << x << endl;
}
和
void increment() {
int v[] = {0,1,2,3,4,5};
for(auto& x : v) {
cout << x << endl;
++x;
}
}
【问题讨论】:
-
你了解
++x的作用吗?你了解引用变量吗? -
一方面,
x是(顺序)数组中每个值的副本。另一方面,它是对数组中每个值的引用。 -
是的,我知道 ++x 是做什么的,但我不明白您所说的引用变量是什么意思? @比尔林奇
-
在第一个例子中,
x是一个int,在循环体中,给出了被操作元素的值。对x所做的任何事情都不会影响v的元素,因为它是元素的副本。在第二个中,x是对v元素的非const引用(因为您尚未指定const),因此++x将增加该元素。