次のコードを検討してください
#include <stdio.h>
int main()
{
char a[] = "hello";
char *ptr = "world";
a[2] = 'y'; //Line1. No segmentation fault
ptr[2] = 'u'; //Line2. Causes Segmentation fault
printf("name = %s\n", a);
printf("name = %s\n", ptr);
return 0;
}
Line2 が文字列定数を変更しようとしたためにセグメンテーション違反が発生した場合、ルールが Line1 に適用されないのはなぜですか?