这可能听起来很古老,但我仍然无法弄清楚为什么以下程序会引发分段错误。任何帮助都会很棒
#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);
}
答案 0 :(得分:1)
在this question的答案中对此进行了解释。
TL; DR:char *x = "Hello";
指向的内存是只读的。试图写入它是非法的,并将导致分段错误。
答案 1 :(得分:1)