C言語の変数とはなにか

int i;

と書いてみる。これはどういう意味だろう? 関数の中で書いたならこれはローカル変数だ。実行位置がその関数に入ると int 型のサイズのメモリ領域が確保されてそれが i という名前で使えるようになる。変数 i が作られたわけだ。

たんに i と書いたなら i の記憶の場所に保持されている整数の値に評価されるし、i = 10 と書いたなら 10 が i の記憶の場所に保管される(そして10に評価される)。i はそのスコープが有効なかぎり対応する記憶の場所があるけれど、これを別の記憶の場所に変えることはできない。

C言語では、変数のシンボル名と記憶の場所の対応関係は不変なのだ。RubyLISP なんていう言語では、変数の記憶の場所を変えることができるけれど、Cではできない。記憶の場所と変数は死ぬまで一緒なのだ。