C で非メイン関数に渡される配列に対して範囲ベースの for ループを使用するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-25 06:57:02
オリジナル
276 人が閲覧しました

How can I use a range-based for-loop on an array passed to a non-main function in C  ?

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

C では、範囲ベースの for ループは次のようになります。配列を反復処理するために使用されます。ただし、配列がメイン関数以外の関数に渡されると、配列はポインターに崩壊し、そのサイズ情報が失われます。

この問題を解決し、範囲ベースの for ループの使用を有効にするには、配列ポインタとして渡されるのではなく、参照される必要があります。これにより、配列のサイズ情報が保持されます。以下は、正しいアプローチを示す変更された例です:

<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;
  }
}

// Generic implementation
template <std::size_t array_size>
void foo(int (&amp;bar)[array_size]) {
  for (int i : bar) {
    cout << i << endl;
  }
}</code>
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!