重複の可能性:
C++ 関数: アンパサンドとアスタリスク
パラメータと組み合わせたさまざまな記号 (*、& など) の違いは何ですか?
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)
)呼び出されているようです。