假设我有如下代码片段所示的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]);
}
Run Code Online (Sandbox Code Playgroud)
我想通过A[0]和A[A[1]]在f()使用电话的名称。
在这种情况下,打印出的结果应该是:(1 1 1 2 1 1 2 1这是由我们的老师提供的编程语言课提供的)。但是,我无法理解y1 in f呼叫print()。是不是y用绑定A[A[1]]=A[2]=1在启动后A[1]--改变A[A[1]]=A[1]=1?之后,y++不会使y等于2?
此外,为了在A[1]之后成为2 A[1]--,必须以某种方式将其递增1,这就是正确的y++含义y++=A[1]++=2。因此,在f呼叫中print(),y =/= A[1]?
在你的榜样,x并且y是按值传递的,该装置的副本正在作出的价值观。的内部f(),x并且y被视为局部变量,任何变化做出x和y不被反射回来给调用者。如果需要,则需要通过引用传递:
void f(int &x, int &y)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |