const変数について
特徴
- 値の変更ができない。(初期化は可能。)
- 関数の引数でなければ、配列のサイズ指定に使用できる。
- マクロと違いデバッグで参照できる。
ポインタ変数のconst指定について
ポインタ変数のconstは次のように2個所指定できる。
const 任意の型* const x;
最初のconstでは、*x=??? ができない。
2番目のconstでは、x=??? ができない。
また、キャストに関して
不可: non-constポインタ変数 = constポインタ変数(明示的キャストが必要)
可能: constポインタ変数 = non-constポインタ変数
例
int i;
int* pi = &i;
const int* p1 = pi;
pi = p1; // 不可
p1 = pi;
i = *p1;
*p1 = i; // 不可
int* const p2 = pi;
pi = p2;
p2 = pi; // 不可
i = *p2;
*p2 = i;
戻る