gpt4 book ai didi

c++ - 在 C++ 中, "reference"真的只是一个别名,而不是 "pointer"吗?

转载 作者:行者123 更新时间:2023-11-30 05:15:19 25 4
gpt4 key购买 nike

这段代码:

int main()
{
int v[] = {0,10,45};

for (auto& x : v) {
cout << x << endl;
x++;
}
}

正在给出这个输出:

01045

那么,为什么读取“x”时是读取值,而修改“x”时是修改引用目标呢?

最佳答案

请考虑以下事项:

int main() {
int v[] = {0,10,45};

for (auto x : v) { // Since it's not an alias it doesn't alter `v` array's contents.
std::cout << ++x << ' '; // Output: 1, 11, 46
}

for (auto x : v) {
std::cout << x << ' '; // Output: 0, 10, 45 DOES NOT MODIFY v
}

}

但是,如果您这样做:

int main() {
int v[] = {0,10,45};

for (auto& x : v) { // Since it IS an alias it will alter `v` array's contents.
std::cout << ++x << ' '; // Output: 1, 11, 46
}

for (auto x : v) {
std::cout << x << ' '; // Output: 1, 11, 46 MODIFIES v
}
}

查看 yourself .

关于c++ - 在 C++ 中, "reference"真的只是一个别名,而不是 "pointer"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43163820/

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