重複の可能性:
Cでcharの文字列を変更することは可能ですか?
char *s = "anusha";
これは定数ポインタのようなものですか?位置3の文字をと書いて変更しようとするとs[3]='k'
、セグメンテーション違反が発生しました。だから私はそれが定数配列を指しているようなものだと思いますか、それともsは定数ポインタですか?2つのうちどちらですか?どうか明らかにしてください。
重複の可能性:
Cでcharの文字列を変更することは可能ですか?
char *s = "anusha";
これは定数ポインタのようなものですか?位置3の文字をと書いて変更しようとするとs[3]='k'
、セグメンテーション違反が発生しました。だから私はそれが定数配列を指しているようなものだと思いますか、それともsは定数ポインタですか?2つのうちどちらですか?どうか明らかにしてください。
そうです、文字列リテラルを変更することは許可されていません。
ただし、これを行うことは合法です。
char s[] = "anusha";
s[3] = 'k'
ここでの違いは、変更可能なローカル配列として格納されていることです。
"anusha"
コンパイラはへのポインタとして扱われるように見えますchar
が、文字列自体を書き込み保護されたメモリに配置します。これは既存のコードに準拠するための便利なポリシーであることを読んだことを覚えています。
Joeが指摘したように、これについては「Cでcharの文字列を変更することは可能ですか?」で詳しく説明されています。。