gpt4 book ai didi

C++ 数组通过引用传递,但是这个怎么理解呢?

转载 作者:行者123 更新时间:2023-11-28 00:40:17 27 4
gpt4 key购买 nike

数组通过引用传递。在函数 changeArray 中对数组所做的任何更改都将在调用范围(此处为 main 函数)中观察到。

然而,下面的代码在第一个 cout 中打印 0 1,并在第二个“cout”中打印 2。我不明白的是,为什么第一个 cout 打印 array[0]=1 的原始值而不是 array[0] 的更改值=2?

非常感谢。

#include <iostream>

using namespace std;

int changeArray(int array[]) {
array[0]=2*array[0];
return 0;
}

int main() {
int array[]={1,2,3,4};
cout << changeArray(array) << " " << array[0] << endl;
cout << array[0] << endl;
return 0;
}

最佳答案

确保编译器不会重新排序执行:

cout << array[0] << endl;
changeArray(array);
cout << array[0] << endl;

这会打印 1,然后打印 2。

允许 C++ 编译器通过在单个表达式中重新排序代码的执行来优化代码(例如 cout << changeArray(array) << " " << array[0] << endl)。为了避免这种情况,并确保 changeArray首先被调用,您需要将表达式拆分为单独的语句,例如通过使用分号 ( ; )。分号之前的所有内容都在分号之后的任何内容开始之前执行。

关于C++ 数组通过引用传递,但是这个怎么理解呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19232329/

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