首頁 > 後端開發 > C++ > 主體

如何在 C 中使用基於範圍的 For 迴圈並將陣列傳遞給非主函數?

Barbara Streisand
發布: 2024-10-25 03:01:30
原創
118 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!