为什么是参考而不是价值?

时间:2017-01-02 17:49:49

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

我正在为即将进行的测试做一些修改,并遇到了这个问题:

Question

商标计划的答案是:

Answer

但是,我会反过来说。鉴于食物已经改变,我认为FoodList将通过参考价值和食物传递。你能解释为什么它反过来了吗?

更新:答案可能是错误的,商标计划中存在一些错误。

1 个答案:

答案 0 :(得分:0)

我唯一的解释是作者混淆了价值"和"参考"。

但是,如果性能起任何作用,FoodList也应该作为参考传递,因为复制引用通常比复制整个字符串要便宜。某些语言(如C ++)允许您将引用标记为常量。这将阻止子程序修改其值。

此外,在大多数编程语言中,子程序称为函数并具有返回值。优良作法是仅将参数用于输入和子程序输出的返回值。 (要找出为什么这是一种好的做法,请搜索术语"副作用"以及"参考透明度"。)

在C ++中,函数可以声明如下:

std::list<std::string> Make_List( const std::string& foodList );