第42章 変えてくれるな2

 今回も定数について話していきます。前回は文法的なことについて触れませんでしたので、今回はそういったことをまとめてみようと思います。


 では、今回の要点です。


 では、いってみましょう。


 前回のように、定数はポインタや参照に対して使うのが一般的です。これは、参照先のデータを不用意に書き換えないようにするためです。

 しかし、ポインタや参照以外、そして引数以外でも定数を使っても構いません。例えば物理計算では様々な物理定数があります。それを生の値でなく、「定数」であらかじめ定義しておくと、再利用ができて便利です。

 この使い方はマクロと似ています。そして、細かい違いはありますが、マクロをこの方法で使う場合は、実際問題ほとんど同じと考えても構いません。まぁ、微妙な違いですので、今はあまり深く考える必要はないでしょう。


 では、ポインタや参照以外で定数を使うときにはどんな文法になるのでしょうか?

 const の文法は以下の通りです。

const <型> <名前> = <初期値>;

 と言っても、const 自体も「型」を示すものですから、

int const unsigned <名前> = <初期値>;

のように、const と <型> の順番はどうなっていても構いません。

 初期値は引数の場合はいりませんが、普通の場合には必須です。あとで値を変えられないのですから...当然ですね。

 例えば、光の速度を c で定義したいときは、

const double c = 299792458;   // 光速は秒速 299792458 メートルと定義されています

のようにします。(余談ですが、現在は、1メートルを「光が 1/299792458 秒の間に進む距離」と定義しています。)

 ポインタの場合、

const char *p;

とすると、参照先が定数になります。p は定数になりません。p を定数にしたい場合は、

char *const p = &a;

と、* の後ろに const を入れます。こうすれば、ポインタ p が定数になります。


 さて、文法的なことはこれで終わりです。定数の使いどころも、前回の事以外特に言及することもありません。

 ということで、これで今回はこれで終わりにします。短かったですかね。

 では、今回の要点です。


 次回はポインタの話から大きく離れて、3項演算子というものについて話したいと思います。ちょっと変わった形の、そして便利な機能です。活用してあげて下さい。


第41章 変えてくれるな | 第43章 ?: ???

Last update was done on 2002.2.28

この講座の著作権はロベールが保有しています