2012-08-14 82 views

回答

2

你試圖修改字符串文本;這是未定義的行爲。

進一步說明:「abcde」不是char *而是const char *。你應該做以下解決方案之一:

char p[] = "abcde"; 

char *p = strdup("abcde"); 

(在後一種情況下,不要忘記釋放()p!)

2

char *p="abcde"; - 這將保持字符串abcde作爲只讀數據,並將地址保存在本地指針變量p中。

*p = 'z'將嘗試將只讀數據a替換爲z。這是一個未定義的行爲,可能導致崩潰。

因此,將字符串聲明爲本地char數組變量,如下所示。

char p[] = "abcde" 

因此,分配動態內存保持字符串如下。

char *p = strdup("abcde"); 
... 
free(p);