傳遞給非主函數的陣列上基於範圍的for 迴圈
在函數呼叫中將陣列分配給指標時,編譯器推斷指標類型並遺失重要資訊:數組大小。當嘗試在函數內執行基於範圍的 for 迴圈時,這種差異會觸發錯誤。
要解決此問題,一種解決方案是使用陣列引用而不是指標。透過這樣做,該函數保留了數組大小的知識:
<code class="cpp">void foo(int (&bar)[3]); int main() { int bar[3] = {1, 2, 3}; for (int i : bar) { cout << i << endl; } foo(bar); } void foo(int (&bar)[3]) { for (int i : bar) { cout << i << endl; } }
或者,可以透過引入表示數組大小的模板參數來採用通用方法:
<code class="cpp">template <std::size_t array_size> void foo(int (&bar)[array_size]) { for (int i : bar) { cout << i << endl; } }</code>
透過利用這些技術,可以在傳遞給非主函數的陣列上成功執行基於範圍的for 迴圈。
以上是如何在 C 中傳遞給非主函數的陣列上使用基於範圍的 for 迴圈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!