為什麼從字串文字到'char*' 的轉換在C 中無效,但在C 中有效
C 更嚴格的類型系統強制執行使用const char 指標來引用字串文字,防止可能導致未定義行為的修改。這在 C 中是不存在的,其中隱式允許從字串文字到「char」的轉換。
為了解決這個不一致問題,C 11 刪除了已棄用的隱式轉換,呈現代碼:
char* p = "abc";
無效。但是,明確強制轉換可維持相容性:
char* p = (char*)"abc";
強制轉換不會規避底層行為。它允許轉換,但不會阻止修改文字帶來的未定義後果。
在 C 中,為了遺留程式碼相容性而維護此轉換的有效性。大量的現有代碼依賴於這種隱式轉換,這使得標準委員會在沒有事先警告的情況下破壞此功能是不切實際的。
因此,雖然 C 禁止隱式轉換以確保型別安全,但由於普遍性,C 允許它程式碼庫依賴性。但是,強烈建議對兩種語言的字串文字使用 char const* 以避免潛在問題。
以上是為什麼將字串文字轉換為'char*”在 C 中無效但在 C 中有效?的詳細內容。更多資訊請關注PHP中文網其他相關文章!