傳遞給非主函數的數組上基於範圍的for 循環
將數組作為參數傳遞給非主函數時函數中,基於範圍的for 迴圈可能會因遺失大小資訊而失敗。以下是解決此問題的方法:
在提供的程式碼中,當 bar 傳遞給 foo 時,它會衰減為指針,失去其大小。為了保留數組大小,我們可以使用數組引用類型通過引用傳遞它:
<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; } } int main() { int bar[3] = {1, 2, 3}; for (int i : bar) { cout << i << endl; } foo(bar); }</code>
透過保留陣列大小訊息,在將陣列傳遞給函數時可以成功使用基於範圍的for 迴圈。
以上是如何在 C 中使用基於範圍的 For 迴圈並將陣列傳遞給非主函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!