【发布时间】:2012-02-13 20:18:53
【问题描述】:
我在引用方面有问题。 考虑这段代码:
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 的真实地址。那么a的价值是如何增加的呢?
纠正我的错误。
【问题讨论】:
-
您可能应该为函数参数和传递给它的变量使用不同的标识符,这样您就不会进一步混淆自己。
-
通过引用传递不会创建副本。它是对同一个变量的引用。
-
我建议您先了解指针,然后再了解引用如何减少未初始化对象和无效指针等带来的痛苦。选择任何您喜欢的 C/C++ 书籍!
标签: c++ parameter-passing pass-by-reference