Reference 传递值结果
我在自学一些参数传递实现模型,在我的编程语言书中,它要求我编写一个程序,根据参数传递中使用的是按引用传递还是按值传递结果来产生不同的行为。有哪些引导性问题可以帮助我理解并得到这个答案Reference 传递值结果,reference,pass-by-reference,pass-by-value,Reference,Pass By Reference,Pass By Value,我在自学一些参数传递实现模型,在我的编程语言书中,它要求我编写一个程序,根据参数传递中使用的是按引用传递还是按值传递结果来产生不同的行为。有哪些引导性问题可以帮助我理解并得到这个答案 我知道passbyreference传递变量的位置,并由函数直接修改,而passbyvalue结果将值复制进来,然后将其复制回来。我想不出结果会有什么不同(也许我误解了传递值结果?)是的,你误解了传递值。传递值传递参数的副本。在被调用函数中对其所做的更改不会复制回调用方。(好吧,至少在我所知道的每种语言中都是这样。
我知道passbyreference传递变量的位置,并由函数直接修改,而passbyvalue结果将值复制进来,然后将其复制回来。我想不出结果会有什么不同(也许我误解了传递值结果?)是的,你误解了传递值。传递值传递参数的副本。在被调用函数中对其所做的更改不会复制回调用方。(好吧,至少在我所知道的每种语言中都是这样。你没有指定语言。)它是按值传递的结果,而不是按值传递的。提示:如果正在传递的对象在构造/破坏时有副作用呢?抱歉,我没有正确阅读你的问题,但它看起来可能是重复的。谢谢你的帮助,这个链接真的帮了我大忙。我想我没有找到任何结果,因为我正在搜索按值传递引用,而不是按值传递结果:|
// Correct implementation of a function addToMyself() as the name suggests
void addToMyself(int &a, int b) {
a += b;
}
// Incorrect implementation
void addToMyself(int a, int b) {
a += b;
}
// Tweaked implentation with pass by value
int addTwo(int a, int b) {
return a+b;
}
// and use
a = addTwo(a, b)