C : 引数の「値渡し」と「参照渡し」の違い
C では、パラメーターとそのパラメーターの間の相互作用引数はパラメータの型によって決まります。値の受け渡しは一般的ですが、特定のシナリオでは参照の受け渡しに明確な利点があります。
参照の受け渡しの背後にある理由
参照の受け渡しには、次の 2 つの主な目的があります。
例: 引数値の変更
次の関数を考えてみましょう:
<code class="cpp">void get5and6(int *f, int *s) { *f = 5; *s = 6; }</code>
ここでは、ポインタを使用して引数を参照渡しします。
<code class="cpp">int f = 0, s = 0; get5and6(&f, &s);</code>
を指定して関数を呼び出すと、関数は参照が指す値を変更するため、f と s はそれぞれ 5 と 6 に設定されます。
または、参照を使用します。直接同じ結果が得られます:
<code class="cpp">void get5and6(int &f, int &s) { f = 5; s = 6; }</code>
次の関数を呼び出しても:
<code class="cpp">int f = 0, s = 0; get5and6(f, s);</code>
同じ効果が得られます。
例: パフォーマンスの最適化
ゲームの状態を保存する関数を考えてみましょう。
<code class="cpp">void SaveGame(GameState& gameState) { gameState.update(); gameState.saveToFile("save.sav"); }</code>
参照を渡さないと、GameState オブジェクトのコピーが関数内に作成され、大量のリソースを消費する可能性があります。参照渡しでは、オブジェクトのアドレスのみがコピーされ、その大きな内容をコピーするオーバーヘッドが回避されます。
参照を使用する場合
参照の受け渡しは、次のような場合に有利です。 :
Const参照
Const 参照により、関数内で引数を変更できないようになります。これらは、特定のパラメータへの読み取り専用アクセスを強制するために使用されます。
以上が## C : 引数を値で渡すのと参照で渡すのはどちらがよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。