【发布时间】:2014-03-30 01:02:48
【问题描述】:
我有一个简单的问题,希望通过引用传递背后的基本逻辑。
这是一个代码(我们称之为 Code1):
void fn(int& a)
{
a = 6;
}
int main()
{
int b = 5;
fn(b);
cout << b;
}
这是另一个代码(Code2):
void fn(int* ptr)
{
*ptr = 6;
}
int main()
{
int b = 5;
fn(&b);
cout << b;
}
还有一个按值传递代码(代码 3):
void fn(int a)
{
a = 6;
}
int main()
{
int b = 5;
fn(b);
cout << b;
}
这是我的问题。直观地说,我看到,在通过值(代码 3)传递时,值被复制,即 a 只会将 b 的值取/复制到自身中。因此,作为一般规则,我看到传递的值总是被复制到被调用的函数(这里是 fn)。即使有指针代码(即Code2),代码2的第一行确保int *ptr = &a;
我不明白这在 Code1 中是如何工作的。说&a = b 毫无意义。这是一个例外,还是符合与上段讨论的案例一致的规则?
谢谢!
【问题讨论】:
标签: c++ function parameter-passing