gcc(Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 で ubuntu 12.04lts を使用しています。最初のプログラムでは文字を置き換えることができますが、正常にコンパイルされたにもかかわらず、2 番目のプログラムで出力を取得できないのはなぜですか? セグメンテーション違反が発生します。誰でも理由を説明できますか?
#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 ;
}