ポインタをconstとして宣言・・・
下の(1),(2)の文について
int n = 10; const int* ip1 = &n; //(1) int* const ip2 = &n; //(2)
(1)の文は「ポインタip1の指している先」を定数として宣言している。つまり、(*ip1)の値を変更することはできない。しかし、ip1の値は変更できる。
int n = 10; int m = 20; const int* ip1 = &n; //(1) *ip1 = 30; //*ip1の値を変更することはできない。コンパイルエラー。 ip1 = &m; //これはOK
(2)の文は「ポインタip2」を定数として宣言している。よってpi2の値を変更することはできない。しかし、*pi2の値は自由に変更することができる。
int n = 10; int i = 20; int* const ip2 = &n; //(2) ip2 = &i; //ip2の値を変更することはできない。コンパイルエラー。 *ip2 = 70; //これはOK
そして、想像通り以下のような宣言方法も存在し、
int j = 100; const int* const ip3 = &j; //(3)
ip3の値と(*ip3)の値はどちらも変更することはできない。