ホームページ >バックエンド開発 >C++ >C で参照またはポインタを渡す場合: 指導原則?

C で参照またはポインタを渡す場合: 指導原則?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-12 16:31:01778ブラウズ

When to Pass by Reference or Pointer in C  : A Guiding Principle?

C での参照またはポインターによる受け渡し : 指導原則

C で、参照による受け渡しを使用する場合とポインターを使用する場合を理解する重要です。これを実践すると、効率的でエラーのないコードが得られます。

一般的な状況

  • 関数に std::string を渡す:

    • foo(std::string*) または foo(std::string&)?
  • tr1::shared_ptr を関数に渡す:

    • foo(tr1::shared_ptr* ptr) または foo(tr1::shared_ptr& ptr)?

ポインターと参照

すべてのオブジェクトを参照として扱うことができるため、参照による受け渡しにより一貫性が保たれます。ただし、ポインターによる受け渡しにより、nullptrs とリテラルを柔軟に処理できます。

スニペット分析

指定されたスニペット:

map<string, shared_ptr<vector<string>> > adjacencyMap;
vector<string>* myFriends = new vector<string>();
myFriends->push_back(string("a"));
myFriends->push_back(string("v"));
myFriends->push_back(string("g"));
adjacencyMap["s"] = shared_ptr<vector<string> >(myFriends);

は、その必要性を強調しています。参照とポインタの両方のプロパティを考慮するには:

  • マップ キーは参照を使用し、メモリ効率を保証します。
  • ベクトル ポインタにより動的割り当てが可能になり、ベクトルの追加が容易になります。

経験則

最終的に、適切な選択は特定の要件によって異なります。指針として、次の点を考慮してください。

  • 参照を使用する: メモリを効率的に使用する場合、および参照先オブジェクトへのアクセスが保証されている場合。
  • を使用するpointers: nullptrs を処理するとき、動的メモリを操作するとき、または参照自体を変更する必要があるとき。

以上がC で参照またはポインタを渡す場合: 指導原則?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。