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

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

Susan Sarandon
リリース: 2024-10-25 09:29:29
オリジナル
896 人が閲覧しました

How to Use Range-Based for-Loops on Arrays Passed to Non-main Functions in C  ?

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

関数呼び出しで配列をポインターに割り当てる場合、コンパイラはポインタの型を推測し、配列サイズという重要な情報を失います。この不一致により、関数内で範囲ベースの for ループを実行しようとするとエラーが発生します。

この問題に対処する 1 つの解決策は、ポインターの代わりに配列参照を利用することです。そうすることで、関数は配列のサイズに関する情報を保持します:

<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;
  }
}</code>
ログイン後にコピー

Byこれらの手法を活用すると、メイン関数以外に渡される配列に対して範囲ベースの for ループを正常に実行できるようになります。

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

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