可能重複:
Why does simple C code receive segmentation fault?誤差爲char代替字符數組
我使用的GCC編譯用C語言在Ubuntu工作;我有這個程序:
void foo(char *word)
{
//something stupid
*word = 'z';
}
int main()
{
char word1[] = "shoe";
char *word2 = "shoe";
foo(word1);
printf("%s", word1);
foo(word2);
printf("%s", word2);
}
那麼有什麼區別?對於後者,我得到segmentation fault
錯誤。
如果每次有人問及修改'const char *'的時候我有一美元...... – 2012-01-05 23:15:41
@EdS .:但它*不是* const char *'。 C中的字符串文字不是'const';試圖修改它們只是未定義的行爲。 (在C++中它們是'const')。 – 2012-01-05 23:26:14
對,這是一個糟糕的設計決定。他們*應該*爲const,但我承認我錯過了C標籤並假定C++。 – 2012-01-05 23:39:58