c ++按值传递,按引用传递或按值传递结果

时间:2015-02-24 20:47:36

标签: c++

这是正确的:

按值传递= 1 1

通过按引用 0 0

传递值结果 1 1

int i;
int a[2];

void inc (int x,int y ) {
  x++;
  y++;
}

int main() {
  a[0] = 1;
  a[1] = 1;
  i = 0;
  inc (a[i],a[i]);
  cout << a[0] << endl << a[1] << endl;
  return 0;
}

2 个答案:

答案 0 :(得分:1)

函数inc不会更改数组a的原始值。它接受值的参数,它处理参数的副本。

如果您希望该函数更改参数,则应将其定义为

void inc (int &x,int &y ){
    x++;
    y++;
}

在这种情况下,对于像这样的函数调用

i = 0;
inc (a[i],a[i]);

输出将是

3 
1

答案 1 :(得分:0)

void inc (int x,int y ){
x++;
y++;

} 当你在main()函数中调用它时,你的函数inc不会增加值。因为x和y是inc的本地值,在inc完成后,编译器将删除x和y的内存。 SO,x和y不再存在。如果你想要传递给inc的值增加(在这种情况下通过引用传递)你可以定义你喜欢这个

void inc(int &x, int&y) {
     x++;
     y++;

}

通过这样做,你将x和y的内存地址传递给in(在你的情况下为[0]和[1]的地址),然后你运用deference地址来获取值,并增加值为1,然后将值存储回地址。