![](/img/trans.png)
[英]C++: How to allocate and fill dynamic array of a struct passed by reference?
[英]C++ Array passed by reference, but how to understand this?
数组通过引用传递。 在函数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
调用changeArray
,您需要将表达式拆分为单独的语句,例如,使用分号( ;
)。 在分号之前的所有内容都可以在分号之后的任何内容开始之前执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.