有趣的謎題:將陣列作為值參數傳遞
這是一個奇怪的現象,雖然我們可以無縫地將複雜的類別實例傳遞給函數,但陣列似乎逃避了這個特權。本文深入探討了這歷史怪癖背後的根本原因。
歷史根源
這個問題的癥結在於簡單優先於複雜。為了確保清晰度,陣列被設計為在傳遞給函數時自動退化為指標。
複製數組的挑戰
實現數組按值傳遞需要復雜的創建副本的過程,導致歧義。行為會根據參數和函數聲明而有所不同,可能會導致混亂。
替代方法:間接以值傳遞
儘管陣列值有限制參數,間接傳值的方法還是可行的。透過將陣列包裝在結構體中,如以下程式碼片段所示,我們可以間接實現按值傳遞行為:
以上是為什麼我們不能在 C 中將陣列當作值參數傳遞?的詳細內容。更多資訊請關注PHP中文網其他相關文章!