1

finalJava またはconstC++ で定数値を強制し、作成したモジュールを使用するすべてのユーザーに対してコンパイラがそれを強制できるようにするという概念を理解しています。

データが一定であるかどうかに関係なく、ポインターをどこに置きたいconstのか、なぜポインターを変更したくないのかわかりません。

例えば

これはなぜですか?

char greetings[] = "Hello";

char * const p = greetings;  // const pointer, non-const data

const char * const p = greetings; // const pointer and const data

ポインター const を保持したい例を視覚化できません。ファイル ハンドルなどに使用できますか? それとも、変更したくないオブジェクトへのポインターですか?

4

1 に答える 1

2

いくつかの理由で、ポインター自体を定数にしたい場合があります。

  • 他の人がコードを理解できるようにする- ポインターを宣言して定数にするときは、関数の残りの部分でそのポインターに変更が加えられていないことを読者に伝えます。
  • 他の人があなたのコードを保守するのを助ける- あなたがポインターで何をするつもりだったかについて、あなたの後にあなたのコードを保守する他の誰かがより良い考えを持っているでしょう. 宣言されたポインターへの非定数参照またはポインターを渡そうとするとconst、コンパイラーはこのエラーをキャッチします。
  • コンパイラーの最適化を有効にする - コンパイラーは何かが宣言されconstていることを確認すると、より積極的に最適化できます。
于 2015-01-10T03:07:02.957 に答える