通过名称调用传递参数

Epi*_* 32 1 c++ parameters

假设我有如下代码片段所示的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]

Ali*_*A2F 6

当您将值传递给C ++中的函数时,该值将成为一个独立值,并且不再引用该数组。因此,y在函数中等于1,并且它独立于起作用A['1']

  • 充其量只是一条评论。 (2认同)

Rem*_*eau 5

在你的榜样,x并且y按值传递的,该装置的副本正在作出的价值观。的内部f()x并且y被视为局部变量,任何变化做出xy不被反射回来给调用者。如果需要,则需要通过引用传递

void f(int &x, int &y)
Run Code Online (Sandbox Code Playgroud)