理解C 中的陣列相等比較
陣列是C 中的基本資料結構,但使用== 運算子進行相等比較通常運算子進行相等比較通常運算會導致達到意想不到的結果。本文旨在闡明發生這種情況的原因,並提供執行逐元素數組比較的替代方法。
問題:
考慮以下程式碼片段:
為什麼這段程式碼的輸出顯示陣列不是等於?
答案:
相等運算子 == 不會對陣列執行逐元素比較。相反,它比較數組的地址,這些地址總是不同的,因為它們儲存在不同的記憶體位置。
要理解原因,我們需要考慮「衰變」的概念。在 C 中,當在表達式中使用陣列時,陣列會衰減為指向其第一個元素的指標。因此,語句:
相當於:
由於 &iar1[0] 和 &iar2[0] 代表不同的記憶體位置,因此比較結果為 false。
逐元素數組的替代方案比較:
不要使用== 運算子比較數組,有兩種推薦的方法:
要執行逐元素比較,您可以迭代數組並檢查每個元素單獨使用:
C 標準函式庫提供了std::array 類型,它允許使用==運算子進行逐元素比較:
以上是為什麼「==」運算子不能用來比較 C 數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!