📑
[C++] ポインタ変数に付けるconstの位置による意味の違い
ポインタ変数にconstを付けて宣言するということが多々あるが、
constの位置による意味の違いがいつもよくわからなくなる。
そのため備忘録として残す。
*より前なら中身、後ならアドレスが変更不可
以下のようにコードを書いて確認した。
temp1はより前にconstを付けて、temp2はより後ろに付けている。
const char* temp1 = "hoge";
temp1[0] = '1'; // NG
temp1 = nullptr; // OK
char* const temp2 = "hoge";
temp2[0] = '1'; // OK
temp2 = nullptr; // NG
*より前にconstが付いている場合は中身が変更不可になる。
*より後の場合はアドレスが変更不可になる。
どちらも変更させたくないなら以下のようにどちらにもconstを付けることもできる。
const char* const temp3 = "hoge";
temp3[0] = '1'; // NG
temp3 = nullptr; // NG
Discussion