首頁 >後端開發 >C++ >為什麼將字串文字轉換為'char*”在 C 中無效但在 C 中有效?

為什麼將字串文字轉換為'char*”在 C 中無效但在 C 中有效?

Patricia Arquette
Patricia Arquette原創
2024-12-19 22:32:12947瀏覽

Why is Converting a String Literal to `char*` Invalid in C   but Valid in C?

為什麼從字串文字到'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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn