【发布时间】:2011-10-16 03:56:13
【问题描述】:
我目前正在阅读 Accelerated C++,但我意识到我并不真正了解函数签名中的 & 工作原理。
int* ptr=#
表示 ptr 现在将地址保存到 num,但这是什么意思?
void DoSomething(string& str)
据我了解,这是通过引用传递变量(这意味着传递地址)但是当我这样做时
void DoSomething(string& str)
{
string copy=str;
}
它创建的是 str 的副本。我认为它会引发一个错误,因为我正在尝试将指针分配给一个变量。
这里发生了什么?在函数调用中使用 * 和 & 是什么意思?
【问题讨论】:
-
& 是一元运算符,它基本上返回指向变量的 const 指针,在该变量上应用运算符
&,即在您的第一种情况下num。其他时候创建一个引用变量。看看明智的答案:)
标签: c++ pass-by-reference