ホームページ >バックエンド開発 >C++ >C で非メイン関数に渡される配列で範囲ベースの For ループを使用する方法

C で非メイン関数に渡される配列で範囲ベースの For ループを使用する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-10-25 03:01:30220ブラウズ

How to Use Range-Based For-Loops with Arrays Passed to Non-Main Functions in C  ?

非メイン関数に渡される配列の範囲ベースの for ループ

配列を引数として非メイン関数に渡す場合関数を使用すると、サイズ情報の損失により範囲ベースの for ループが失敗する可能性があります。この問題を解決する方法は次のとおりです。

提供されたコードでは、bar を foo に渡すと、ポインターに減衰し、サイズが失われます。配列サイズを保持するには、配列参照型を使用して配列サイズを参照によって渡すことができます:

<code class="cpp">void foo(int (&amp;bar)[3]);

int main() {
  int bar[3] = {1, 2, 3};
  for (int i : bar) {
    cout << i << endl;
  }
  foo(bar);
}

void foo(int (&amp;bar)[3]) {
  for (int i : bar) {
    cout << i << endl;
  }
}

あるいは、任意のサイズの配列を自動的に受け入れるテンプレート関数を使用した一般的なアプローチを使用することもできます:

<code class="cpp">template <std::size_t array_size>
void foo(int (&amp;bar)[array_size]) {
  for (int i : bar) {
    cout << i << endl;
  }
}

int main() {
  int bar[3] = {1, 2, 3};
  for (int i : bar) {
    cout << i << endl;
  }
  foo(bar);
}</code>

配列のサイズ情報を保持することで、配列を関数に渡すときに範囲ベースの for ループを正常に使用できます。

以上がC で非メイン関数に渡される配列で範囲ベースの For ループを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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