这是正确的:
按值传递= 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;
}
答案 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,然后将值存储回地址。