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

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

Susan Sarandon
Susan Sarandon原創
2024-10-25 09:29:29791瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn