已棄用C 中從字串文字到'char*' 的轉換
宣告如下所示的字串陣列時:
<code class="cpp">char *colors[4] = {"red", "orange", "yellow", "blue"};</code>
您可能會遇到編譯器警告:「已棄用從字串文字到'char*' 的轉換。」
了解錯誤
此錯誤源自於事實上,「{}」中提供的字串是字串文字,在程式碼本身中定義。預設情況下,字串文字是不可變的,這意味著您無法在運行時修改它們的內容,例如透過寫入它們的指標。
使用指向字元的指標聲明數組,如果您嘗試寫入,則很容易出現運行時錯誤原始輸入(「紅色」、「橘色」等)。這可能會意外修改原始字串,從而導致不可預測的結果。
非棄用解決方案
要解決此問題並避免潛在的運行時錯誤,您應該聲明該數組作為指向字元的 const 指標。
<code class="cpp">const char *colors[4] = {"red", "orange", "yellow", "blue"};</code>
透過新增 const 關鍵字,可以確保字串不可變且不會被無意中修改。
編輯值的注意事項
如果您預見到需要在運行時修改字串值,您可以將字串文字複製到單獨的數組或使用strtok () 等機制來操作各個字元。
以上是為什麼在宣告字串陣列時,在 C 中會收到「已棄用從字串文字到「char*」的轉換」警告?的詳細內容。更多資訊請關注PHP中文網其他相關文章!