【问题标题】:Pass by value result按值传递结果
【发布时间】:2014-04-14 11:42:48
【问题描述】:

我正在自学一些参数传递实现模型,在我的编程语言书中,它要求我编写一个程序来产生不同的行为,具体取决于在其参数传递中使用的是引用传递还是值传递结果。有哪些重要问题可以帮助我理解并得到这个答案?

我知道按引用传递变量的位置并由函数直接修改,而按值传递结果复制值然后将其复制回。我只是想不出结果会不同的情况(也许我误解了按值传递的结果?)。

【问题讨论】:

  • 是的,您误解了按值传递。按值传递传递参数的副本。在被调用函数中对其所做的更改不会复制回调用者。 (嗯,至少在我所知道的每一种语言中。你没有指定语言。)
  • 是传值结果不是传值。
  • 提示:如果被传递的对象在构造/销毁时有副作用怎么办?
  • 抱歉,我没有正确阅读您的问题,但看起来可能是重复的。见stackoverflow.com/questions/5768721/pass-by-value-result
  • 感谢您的帮助,该链接确实帮助了我。我想我没有找到任何结果,因为我正在搜索按值传递而不是按值传递结果:|

标签: reference pass-by-reference pass-by-value


【解决方案1】:
// 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)

【讨论】:

    猜你喜欢
    • 2017-01-19
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多