首頁 > 後端開發 > C++ > 主體

為什麼基於範圍的 for 迴圈在傳遞給 C 中非主函數的陣列上使用時會失敗?

Linda Hamilton
發布: 2024-10-25 02:15:29
原創
985 人瀏覽過

Why does a range-based for-loop fail when used on an array passed to a non-main function in C  ?

數組上基於範圍的For 循環傳遞給非主函數

問題:

在C 專案中,嘗試在傳遞給非主函數的陣列上使用基於範圍的for 迴圈無法編譯。當嘗試存取非主函數中基於範圍的 for 迴圈時,程式碼會拋出錯誤,導致無法找到 begin(int*&) 的匹配函數呼叫。

答案:

當您將數組傳遞給非主函數時,數組會衰減為指針,從而丟失有關其大小的關鍵信息。要在非主函數中啟用基於範圍的 for 迴圈:

  1. 使用陣列引用: 透過引用而不是指標傳遞數組。這保留了大小資訊:

    <code class="cpp">void foo(int (&&bar)[3]);</code>
    登入後複製
  2. 通用方法: 使用指定數組大小的模板參數的函數模板。這種方法允許傳遞不同的數組大小:

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

透過保留大小訊息,基於範圍的 for 循環可以在非範圍內正確地迭代數組元素。主要功能。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!