次のコードを書きました。
int main()
{
char *str = "hello";
str[0] = 'H';
printf("%s\n", str);
}
これにより、セグメンテーション違反が発生します。理由がわかりません。
str
ありpointer to char
ませんconst char
。その場合でも、次のプログラムのようなコンパイル エラーが発生することはありません。
int main()
{
const char *str = "hello";
str[0] = 'H';
printf("%s\n", str);
}
エラーが発生します: assignment of read-only location *str
。
編集
私のコードが読み取り専用の場所へのポインターを配置した場合、コンパイル エラーが発生することはありませんか?