使用指向char而不是char数组的错误

eli*_*264 4 c arrays pointers

可能重复:
为什么简单的C代码会收到分段错误?

我在Ubuntu中使用GCC编译器和C语言; 我有这个程序:

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);
}
Run Code Online (Sandbox Code Playgroud)

那有什么区别?后者我得到一个segmentation fault错误.

NPE*_*NPE 5

区别在于第一个是有效代码,而第二个是未定义的行为(因为不允许修改字符串文字).请参阅常见问题.

  • 如果每次有人询问修改`const char*'时我都有一美元...... (2认同)