簡體   English   中英

為什么我不能修改 c 中的字符串文字?

[英]Why can I not modify a string literal in c?

我試圖理解無法在 C 中修改字符串文字的原因。

為什么以下在 C 中是非法的?

char* p = "abc";
*p = 'd';

C89 基本原理,3.1.4 字符串文字

字符串文字被指定為不可修改。 該規范允許實現共享具有相同文本的字符串副本,將字符串文字放置在只讀 memory 中,並執行某些優化。 但是,字符串文字沒有 const char 的類型數組,為了避免指針類型檢查的問題,特別是對於庫函數,因為將指向 const char 的指針分配給指向 char 的普通指針是無效的。 那些堅持字符串文字應該是可修改的委員會成員滿足於將這種做法指定為一個公共擴展(參見 F.5.5)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM