1

我们有功能

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

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

4

2 回答 2

4

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

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

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

更多信息请参见http://www.learncpp.com/cpp-tutorial/73-passing-arguments-by-reference/

于 2013-10-17T06:09:03.213 回答
1

除了其他答案中给出的信息外,我建议使用谷歌搜索事物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: %s\n", (y==6?"yes":"no"));
}

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

于 2013-10-17T07:22:52.067 回答