次のように宣言して実行すると、セグメンテーション違反が発生します。
main()
{
char *p = "boa";
*(p+1) = 'y';
printf("%s",p);
}
char *p
定数などだと思います。
ただし、以下は正常に機能します。
main()
{
int i = 300;
char *p = (char*)&i;
*(p+1) = 'y';
printf("%s",p);
}
この背後にある理由は何ですか?上記のルールはこれにも当てはまりませんか?