C言語におけるconstキーワードの働きについて、複数の話題が混在しているようですから、順番に解説してみます。 const修飾には「定数値」と「読み取り専用」という2つの側面があります。両者はよく似ていますが、明確に異なる意味をもっています。前者は"値/データそれ自身"に対する修飾であり、後者が"式の評価結果"に対する修飾となることに注意してください。 初期値をともなう変数定義でconst修飾を用いた場合、「定数値」の定義となります。例:const int x = 5; とすると、名前 x は定数値 5 となります。 ポインタが指す先の型(詳細後述)でconst修飾を用いた場合、「読み取り専用」宣言になります。例:int y = 10; const int *p = &y; とすると、式 *p の評価結果は const int 型つまり「読み取り専用」となります。 「定数値」では、実行時に