假设我有这样的 C++ 片段:
int A[3] = {0, 2, 1};
void f(int x, int y) {
x++; A[1]--; y++;
print(x, y, A[0], A[1], A[2]);
}
void main() {
f(A[0], A[A[1]]);
print(A[0], A[1], A[2]);
}
我想在 f()
中使用调用名称传递 A[0]
和 A[A[1]]
.
在这种情况下,打印的结果应该是:1 1 1 2 1 1 2 1
(这是来 self 们老师的编程语言课)。但是,我无法理解 y
在 f
对 print()
的调用中如何可以为 1。 y
是否在 A[1]-- 开始和之后与
更改为 A[A[1]]=A[2]=1
绑定(bind)--A[A[1]]=A[1]=1
?之后,y++
不会使 y
等于2?
此外,为了使 A[1]
在 A[1]--
之后变为 2,它必须以某种方式递增 1,这正是y++
做什么,意思是 y++=A[1]++=2
。那么,在 f
对 print()
的调用中,y =/= A[1]
?
最佳答案
当你在 C++ 中将一个值传递给一个函数时,它就变成了一个独立的值,它不再引用数组。因此,y
在函数中等于 1,它独立于 A['1']
。
关于c++ - 使用按名称调用传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56726700/