按引用和值传递

Passing by reference and by value

本文关键字:值传 引用      更新时间:2023-10-16

我们有函数

int foo(int x)
{
    return x;
}
int bar(int& x)
{
    return x;
}
...
foo(5);//ok
bar(5);//error

我不明白,当我们打电话给foo(5)时会发生什么?内存中刚刚分配了 4 个字节并传输到foo?还是在分配4个字节后将创建此存储单元的副本并传输到foo

函数栏将输入参数作为引用。这种用法的限制是在调用函数时不能将文本作为参数传递。

5 是文字。不能传递文本或表达式作为引用。此外,您的两个函数都返回整数,但您没有捕获它们。

函数 foo 按值接受输入。因此,将创建并处理输入变量的副本。函数内部的变量和外部的调用变量在这里是 2 个不同的变量。

更多信息可以在 http://www.learncpp.com/cpp-tutorial/73-passing-arguments-by-reference/

除了另一个答案中给出的信息外,我建议谷歌搜索lvaluervalue的东西。

此外,想象一下这奏效了:

void bar(int& x)
{
  x = 6; // modify the referenced value, not some local variable!
}
main() {
  int y = 6;
  bar(5);
  printf ("equal or not: %sn", (y==6?"yes":"no"));
}

运行此程序应该有什么效果?