C 和C 中的陣列賦值
C 和C 允許在結構體中按成員方式對數組下不允許。這種行為是語言歷史演進的結果。
最初,C 中的陣列被建模為記憶體中的指針,稱為「熟數組」。當引入結構體時,結構體中的陣列會被區別對待以確保記憶體安全。這允許在結構內按成員方式分配數組,而不會影響與現有程式碼的相容性。
相反,C 的原始設計不支援在結構外部分配數組。這是由於擔心指標變基以及缺少聲明為函數參數的陣列的大小資訊。為了避免引入錯誤和相容性問題,首選使用 memcpy 進行明確賦值。
但是,正如 Luther Blissett 所指出的,C 關於結構賦值的規範明確允許對包含的陣列進行成員賦值。這是設計的一個意想不到的副作用,但它被認為是一種促進結構內資料複製而不破壞既定模式的方法。
因此,支援結構內數組的成員分配,但通常不是C 早期設計決策的遺產以及該語言隨後的發展,導致了嵌入在結構中的數組和獨立使用的數組之間的區別。
以上是為什麼我不能在 C 和 C 中直接為數組賦值,但可以在結構體中賦值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!