定数はどうなる?

98/11/06 IE4.xに対応させた

Q.1つのCプログラムは、その大きさはどうであれ、関数と変数からなる、との事ですが、それじゃ定数(const)はどうなるんですか?

A.constって定数なの?(バキッ)


確かにconst修飾子を、
const int a=2;
みたいに使うと、いかにも定数っていう感じがします。でも、
const int a=2;
const int *b=&a; /*  こっちが重要  */
のように、ポインタにconst修飾子が付いていたらどうでしょう?
上の例では、const int型の変数のポインタbは、const int型の変数aのアドレスを指し示しています。つまり、ポインタbが指し示しているアドレスに格納されている値は、この時点で(変数aの値である)2であることがわかります。
それでは、その後、
int c=5;
b=&c;
としたらどうでしょう。これでポインタbは、int型の変数cのアドレスを指し示します。そう、これで、ポインタbが指し示すアドレスに格納されている値は(変数cの値ですから)5に変わってしまうのです。このように、const修飾子が付いている場合でも、その値は変わるのです。もちろん、値の代入はできませんが・・・。

constって、変数を定数にするんじゃなくて、値の代入ができなくする修飾子なのではないでしょうか?


[メニュー][第21回][第22回]

いーざ
email:CQP00202@nifty.ne.jp