我的参考资料有问题.
考虑以下代码:
考虑以下代码:
void pseudo_increase(int a){a++;} int main(){ int a = 0; //.. pseudo_increase(a); //.. }
这里,变量a的值不会随着它的克隆或副本的传递而增加,而不是自身变量.
现在让我们考虑另一个例子:
void true_increase(int& a){a++;} int main(){ int a = 0; //.. true_increase(a); //.. }
这里据说a的价值会增加 – 但为什么呢?
调用true_increase(a)时,将传递a的副本.这将是一个不同的变量.因此& a将与a的真实地址不同.那么增加的价值怎么样?
在我错的地方纠正我.
解决方法
请考虑以下示例:
int a = 1; int &b = a; b = 2; // this will set a to 2 printf("a = %d\n",a); //output: a = 2
这里b可以像a的别名一样对待.无论你分配给b,都将分配给a(因为b是对a的引用).通过引用传递参数没有什么不同:
void foo(int &b) { b = 2; } int main() { int a = 1; foo(a); printf("a = %d\n",a); //output: a = 2 return 0; }