可能重複:
Why is this C code causing a segmentation fault?爲什麼第二個代碼中的段錯誤?
char array[6] = "kapil";
array [0] = 'K';
該代碼運行正常。
但是以下代碼產生分段錯誤?
char* array = "kapil";
array [0] = 'K';
爲什麼先不產生seg-fault。
可能重複:
Why is this C code causing a segmentation fault?爲什麼第二個代碼中的段錯誤?
char array[6] = "kapil";
array [0] = 'K';
該代碼運行正常。
但是以下代碼產生分段錯誤?
char* array = "kapil";
array [0] = 'K';
爲什麼先不產生seg-fault。
char* array = "kapil";
聲明瞭一個字符串文字,相當於const char*
。這可能存在於只讀存儲器中,無法修改。
嚴格來說,嘗試修改它會導致未定義的行爲,但實際上可能會出現seg錯誤。
char* array = "kapil";
使用這種類型的聲明,它在只讀上下文中複製kapil
,您可以更改其內容。