繁体   English   中英

C ++数组通过引用传递,但是如何理解呢?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM