質問

これは、私が持っている別の質問の続きです。

次のコードを検討してください: ジェネラコディセタグプレ

驚いたことにコンパイルされず(どうやら私は思ったほどC構文を知らないようです)、次のエラーが発生します: ジェネラコディセタグプレ

char *をchar []に変更すると、正常にコンパイルされます: ジェネラコディセタグプレ

誰かが私に理由を説明できますか?

役に立ちましたか?

解決

最初の例(char *hi = "hello";)では、静的const文字列 "hello"を指すように初期化される非constポインターを作成しています。このポインタは、理論的には、好きなものを指すことができます。

2番目の例(char hi[] = "hello";)では、ポインターではなく配列を具体的に定義しているため、配列が参照するアドレスは変更できません。配列は、特定のメモリブロックへの変更不可能なポインタと見なすことができることに注意してください。

最初の例は、実際にはC ++で問題なくコンパイルされます(少なくとも私のコンパイラー)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top