C 中的陣列表現出特殊的行為,其中之一是它們的可賦值性受到限制。讓我們研究為什麼禁止將一個數組分配給另一個數組,如下列代碼所示:
此代碼會產生錯誤“錯誤C2106:'=':左操作數必須是左值”,表示嘗試指派給不可修改的物件。
出現錯誤是因為 C 中的陣列被認為是不可修改或不可分配的,主要是由於與 C 向後相容。將一個陣列分配給另一個數組需要複製其所有元素,這是非常低效且容易出錯的。
相反,C 鼓勵使用標準模板庫 (STL) 中的容器,例如std::array 或 std::vector,提供高效且類型安全的類似數組的功能。例如,使用std::array 來實現所需的功能:
對於原始陣列(如原始程式碼中的陣列),您可以使用循環手動複製元素或利用std::copy 函數:
此外,提供的程式碼示範了使用空值初始化值陣列的捷徑,利用未提供的初始化器的C 規則導致值初始化為零。因此,以下兩個程式碼片段是等效的:
透過理解這些細微差別,您可以避免賦值錯誤並有效地使用 C 中的陣列。
以上是為什麼我不能在 C 中直接將一個陣列分配給另一個陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!