首頁 > 後端開發 > C++ > 如何在 C 中傳遞給非主函數的陣列上使用基於範圍的 for 迴圈?

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

Susan Sarandon
發布: 2024-10-25 09:29:29
原創
897 人瀏覽過

How to Use Range-Based for-Loops on Arrays Passed to Non-main Functions in 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;
  }
}
登入後複製

或者,可以透過引入表示數組大小的模板參數來採用通用方法:

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

透過利用這些技術,可以在傳遞給非主函數的陣列上成功執行基於範圍的for 迴圈。

以上是如何在 C 中傳遞給非主函數的陣列上使用基於範圍的 for 迴圈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板