函數中的陣列值傳遞異常
儘管能夠將複雜的類別實例傳遞給函數,但按值傳遞數組仍然令人困惑。為什麼會這樣呢?
歷史根源
根本原因是歷史的。簡化的規則「傳遞給函數時數組會衰減為指標」一直作為在函數中處理數組的便捷解決方案。
陣列複製的複雜性
複製陣列將是一個麻煩且可能不明確的過程。行為會根據參數類型和函數聲明而有所不同。
間接值傳遞
雖然不可能直接按值傳遞數組,但間接值傳遞仍然允許操作函數內的數組。考慮以下範例:
struct A { int arr[2]; }; void func(struct A);
將 struct A 的實例傳遞給 func() 間接以值傳遞其陣列。在函數內,可以在不改變原始數組的情況下操作數組。
以上是為什麼我們不能在函數中按值傳遞數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!