嘗試在作為參數傳遞的數組上使用基於範圍的for 循環時對於非main函數,你可能會遇到編譯錯誤。這是因為數組引用衰減為指針,丟失有關數組大小的信息。
要解決此問題,有兩種方法:
您可以將陣列作為引用傳遞以保留其大小資訊。這個方法需要修改函數簽名,如下所示:
<code class="cpp">void foo(int (&bar)[3]);</code>
對於可以處理不同大小數組的通用程式碼,您可以定義一個接受任意大小的陣列引用的範本函數:
<code class="cpp">template <std::size_t array_size> void foo(int (&bar)[array_size]) { // Range-based for-loop is valid now }</code>
以上是以下是一些標題選項,請記住問題格式並專注於核心問題: **選項 1(直接且以問題為中心):** * **為什麼基於範圍的 For 迴圈在陣列傳遞時失敗的詳細內容。更多資訊請關注PHP中文網其他相關文章!