1

重複の可能性:
Cでcharの文字列を変更することは可能ですか?

char *s = "anusha";

これは定数ポインタのようなものですか?位置3の文字をと書いて変更しようとするとs[3]='k'、セグメンテーション違反が発生しました。だから私はそれが定数配列を指しているようなものだと思いますか、それともsは定数ポインタですか?2つのうちどちらですか?どうか明らかにしてください。

4

2 に答える 2

4

そうです、文字列リテラルを変更することは許可されていません。

ただし、これを行うことは合法です。

char s[] = "anusha";
s[3] = 'k'

ここでの違いは、変更可能なローカル配列として格納されていることです。

于 2012-02-04T02:39:31.947 に答える
0

"anusha"コンパイラはへのポインタとして扱われるように見えますcharが、文字列自体を書き込み保護されたメモリに配置します。これは既存のコードに準拠するための便利なポリシーであることを読んだことを覚えています。

Joeが指摘したように、これについては「Cでcharの文字列を変更することは可能ですか?」で詳しく説明されています。

于 2012-02-04T02:44:56.493 に答える