constの正しい用法はcode as documentationとして重要なのでしっかり理解しておきたいところ.
int i = 500; // 1. const int* pVal = &i; // 2. int* const pVal = &i; // 3. const int* const pVal = &i;
1はconst修飾子が適用されたint型,つまり定数intを指すポインタである.
ゆえにポインタを経由してpValの値を変更することはコンパイラが許可しないが,pVal自体別のconst int型を指し示すことはできる.
2はint型を示すconst修飾子が適用されたポインタ,言い換えるとそのポインタの持つ値,つまりはアドレスの変更が不可能なポインタである.ポインタ経由でiの値を変更することは認めるが,i意外の変数を指し示すことは許さない.
3は定数int型を示す定数ポインタである.ポインタ経由での値の変更も許されなければ,またポインタの指す値を変えることも出来ない.
0 件のコメント:
コメントを投稿