Possible Duplicate:
Difference between char *str=「STRING」 and char str[] = 「STRING」?用C
初始化字符串我寫了下面的代碼:
int main()
{
char *str = "hello";
str[0] = 'H';
printf("%s\n", str);
}
這給了我一個分段錯誤,我無法理解這是爲什麼。
str
是pointer to char
不是const char
。即使是這樣的情況下,不應該把它給一個編譯錯誤,像下面的程序:
int main()
{
const char *str = "hello";
str[0] = 'H';
printf("%s\n", str);
}
它給出了一個錯誤:assignment of read-only location *str
。
編輯
如果我的代碼放置指向一個只讀的位置,我不應該得到一個編譯錯誤?
請使用搜索功能。如果你搜索,你會發現數百個完全相同的問題。 – Marlon
@Marlon請將重複問題的鏈接粘貼到計算器上 –
指針不是隻讀的。它只是指出你的字符串存儲在內存中的位置。在聲明字符串的方式之間存在細微的差別,這會改變它的存儲方式。 –