【问题标题】:difference between passing parameters in function using call by value and call by reference在函数中使用按值调用和按引用传递参数的区别
【发布时间】:2020-11-15 16:23:55
【问题描述】:

如果 p 的值在调用前被初始化为 5,那么 f(p, p) 的返回值是多少?注意第一个参数是引用传递,而第二个参数是值传递。

int f(int& x, int c)
{
  c = c — 1;
  if (c = = 0)
    return 1;

  x = x + 1;
  return f(x, c) * x;
}

【问题讨论】:

  • 你试过了吗?
  • 代码无效。
  • @CiaPan - 你为什么说代码无效?没关系,唯一的限制是您不能将整数文字作为 x 传递(并且您必须删除 Unicode 字符并用 ASCII 替换它们)
  • 我说这是无效的,因为if (c = = 0) 中的两个连续的= 运算符不符合C++ 语法。

标签: c++ recursion parameter-passing pass-by-reference call-by-value


【解决方案1】:

我怀疑这里是 UB,因为您无法保证 x 值是否会被提取以进行乘法之前之后执行递归调用f .

【讨论】:

    猜你喜欢
    • 2012-05-22
    • 1970-01-01
    • 2011-01-30
    • 2011-08-19
    • 2019-02-10
    • 1970-01-01
    • 2023-03-04
    • 2011-01-08
    • 1970-01-01
    相关资源
    最近更新 更多