C中的指针到指针会引发分段错误

时间:2014-08-12 20:07:05

标签: c pointers

这可能听起来很古老,但我仍然无法弄清楚为什么以下程序会引发分段错误。任何帮助都会很棒

#include <stdio.h>
pointer(char **x)
{
    printf ("Before %c",*x[0]);
    *x[0] = 'a';   // segmentation fault here!!
    printf ("After %c", *x[0]);
}
int main()
{
    char *x = "Hello";
    pointer(&x);
}

2 个答案:

答案 0 :(得分:1)

this question的答案中对此进行了解释。

TL; DR:char *x = "Hello";指向的内存是只读的。试图写入它是非法的,并将导致分段错误。

答案 1 :(得分:1)

char * x =“你好”;

此声明使其成为只读。以你试过的方式写它是非法的。

有关详细信息,请参阅this