小编Fra*_*rme的帖子

如果数组是通过引用传递的,为什么要使用 int(&)[]?

考虑:

#include <iostream>
using namespace std;

void Change(int arr[3]) {
    for (int i = 0; i < 3; i++) {
        arr[i] = 1;
    }
}

int Test() {
    int arr[3] = { 0, 0, 0 };

    for (int i = 0; i < 3; i++) {
        cout << arr[i] << endl;
    }

    Change(arr);

    for (int i = 0; i < 3; i++) {
        cout << arr[i] << endl;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

由于数组默认作为指向其第一个元素的指针传递并且不会被复制,因此在函数中更改数组元素的值实际上会导致在函数调用者中更改数组该元素的值,这就是为什么以上代码输出

#include <iostream>
using namespace std;

void Change(int …
Run Code Online (Sandbox Code Playgroud)

c++ pass-by-reference pass-by-value function-declaration

17
推荐指数
1
解决办法
2082
查看次数