可能重複:
C++ functions: ampersand vs asterisk
What are the distinctions between the various symbols (*,&, etc) combined with parameters?差異呼籲
我想知道地址運營商&
,並在尊重運營商*
之間的區別一個C++函數調用。例如採取以下功能
void foo (std::string& param)
{
param = "Bar.";
std::cout << param.size();
}
,讓我們把它在我們像這樣main()
功能...
int main()
{
std::string test;
foo(test); //Why not foo(&test)?
std::cout << test; //Prints out the value "Bar."
}
首先,爲什麼&
運營商允許我分配一個值,如果它是一個指針(當它不是一個指針時,爲它指定一個可以存活RAII的值和函數範圍foo()
),因爲它可以在我的main()
函數中打印出來,即使它不是static
?我假設它不是指針,因爲我可以通過使用.
運算符而不是用於指針的->
來訪問size()
方法。
其次,在函數參數中使用&
運算符與使用運算符*
之間有什麼區別?它不僅僅是一個簡單的變量,如std::string param
?它似乎是這樣調用的(foo(test)
而不是foo(&test)
)。
仔細看看C++ *參考*。 – mavam 2012-07-14 19:36:27
這不是一個操作員,它是一個參考。 – Dani 2012-07-14 19:36:45
http://stackoverflow.com/questions/57483/what-are-the-differences-between-pointer-variable-and-reference-variable-in-c – chris 2012-07-14 19:37:18