ポインタ変数に対するconst宣言

前々から、

  1. 定数データへのポインタ と
  2. 定数ポインタ の違いについて、

const修飾子をどこに付けたらどっちの意味だっけ? と頭がこんがらがることが多かったので、

などを参照しつつ、確認のためのコードを書いてみた。

const の意味的に重要なのは const が * の前か後ろ、どちらにあるかということで

  1. * の前 → 定数データへのポインタ
  2. * の後 → 定数ポインタ

という対応になっている。

標準ライブラリ関数のプロトタイプなどを見れば、参照先データの変更が禁止されるべき局面で前者の書き方がされていることを多数発見できるので、この対応関係を忘れたとしてもそこから導くことができるだろう。