為什麼C 和C 語言支持結構體中的成員數組賦值
雖然C 和C 語言通常禁止數組的成員賦值,但它在結構中受支撐。這種明顯的矛盾源自於這些語言的歷史演變。
在結構定義中,引入數組作為為資料分配連續記憶體的便捷方式。然而,在 C 的早期迭代中,數組僅僅是指向記憶體區域的指標。因此,將一個陣列分配給另一個陣列會導致指標分配,而不是按元素複製。
即使在 K&R C 中加入結構體賦值,這種行為仍然存在。編譯器沒有為結構體定義單獨的賦值運算符,而是簡單地使用記憶體複製操作(memcpy)來分配所有成員。這有效地將數組包含在結構中。
因此,結構賦值在結構上下文中隱式引入了數組賦值的形式。然而,這種賦值仍然僅限於結構體內部,並且將一個數組直接分配給另一個數組,即使它包含在結構體中,在 C 和 C 中仍然不支持。
結構體內部數組和結構體內部數組之間的這種區別通用數組有兩個用途:
以上是為什麼 C 和 C 允許在結構中進行成員數組賦值,但不允許在獨立數組中賦值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!