ホームページ > バックエンド開発 > C++ > C の参照による受け渡しと値による受け渡し: 違いは何ですか? どちらをいつ使用する必要がありますか?

C の参照による受け渡しと値による受け渡し: 違いは何ですか? どちらをいつ使用する必要がありますか?

Mary-Kate Olsen
リリース: 2024-12-22 05:55:10
オリジナル
765 人が閲覧しました

Pass by Reference vs. Value in C  : What's the Difference and When Should I Use Which?

C での参照による受け渡しと値による受け渡し

C で関数に引数を渡す場合、主に 2 つの方法があります。値による受け渡しと、値による受け渡しです。参照渡し。これら 2 つのアプローチの違いを理解することは、効果的なコーディングを行うために非常に重要です。

値による受け渡し

値による受け渡しでは、関数のスコープ内で引数のコピーが作成されます。 。このコピーには、元の引数とは異なる独自の参照があります。したがって、関数内でローカル変数を変更しても、関数外の元のオブジェクトには影響しません。

参照渡し

一方、参照渡しは、関数に元のオブジェクトへの直接アクセスを許可します。ただし、この用語にはさまざまな解釈が存在します。

引数とパラメータ参照

参照渡しを、引数そのものではなく、参照されるオブジェクトを渡すと呼ぶ人もいます。 。これは、関数内で新しいオブジェクトが作成される値渡しとは異なります。

オブジェクトの可変性

参照渡しは、オブジェクトが作成できないことを意味すると主張する人もいます。呼び出し先内で変更できます。このビューでは、オブジェクトの値を変更する関数は、関数のスコープ内外の両方に影響します。

参照渡しの定義

混乱を明確にするために、次のようにします。次のように参照渡しを定義します。

対応するパラメータが参照型を持ち、直接バインドされる場合にのみ、引数は参照によって渡されます。引数式に。それ以外の場合はすべて、値渡しです。

参照渡しと値の例

次の例を考えてみましょう。

  • 値渡し:

    • void f1(Object o);
    • f1(Object());
    • int i = 42 などのリテラル値の受け渡し;
  • Pass参照により:

    • void f1(Object *&op);
    • オブジェクト a;オブジェクト *op1 = &a; f1(op1);
    • f2(b) などの参照によるオブジェクトの直接受け渡し

参照による受け渡しと値による受け渡しの影響

  • への変更参照によって渡されたオブジェクトは、関数のスコープを超えて存続します。
  • 値によって渡されたオブジェクトへの変更は、元の値には影響しません。
  • 参照によって渡される大きなオブジェクトを渡す場合、より効率的です。コピーします。
  • 関数が誤ってオブジェクトを変更する可能性がある場合、値渡しによりオブジェクトの整合性が保証されます

以上がC の参照による受け渡しと値による受け渡し: 違いは何ですか? どちらをいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート