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

Barbara Streisand
リリース: 2024-10-25 03:01:30
オリジナル
119 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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