我正在使用带有 gcc(Ubuntu/Linaro 4.6.3-1ubuntu5)4.6.3 的 ubuntu 12.04lts。我可以在第一个程序中替换一个字符,但是为什么我不能在第二个程序中得到输出,即使它编译成功了?我得到分段错误。谁能解释原因?
#include<stdio.h>
int main(void)
{
char word[] = "Bhilip";
char *cp = word ;
puts(word);
cp[1] = 'T'; // allowed??
puts(word);
return 0;
}
#include<stdio.h>
int main(void)
{
char * p1 = "Bhilip";
p1[0] = 'T'; //allowed?
printf("\nThilip");
printf(" %s \n\n", "Thilip");
return 0 ;
}