我不确定这个主题是否与 Call-By-Reference 有关,但我对这两个片段有疑问:
爪哇
public static int calculateWinner(int[][] game){
game[0][0] = 5;
.
.
.
}
public static void main(String[] args) {
int[][] game = {
{1, 2, 2},
{2, 1, 2},
{1, 1, 1}
};
int winner = calculateWinner(game);
.
.
.
}
C++
int calculateWinner(array<array<int, 3>, 3> field) {
field[0][0] = 5;
.
.
.
}
int main(int argc, const char* argv[]) {
array<array<int, 3>, 3> field;
field[0] = { 2, 0, 1 };
field[1] = { 0, 1, 0 };
field[2] = { 1, 0, 2 };
int winner = calculateWinner(field);
.
.
.
}
因此,如果我在 main 方法中打印出数组,为什么在 Java 中我的位置 [0][0] 的数组是 5 而在 C++ 中却不是?我了解到在 C++ 中它只是范围内的副本。究竟有什么区别?