コンピュータの中には無数の部品がありますが、プログラムを学ぶうえで主役は2つだけです。CPUとメモリです。
机で作業する場面を思い浮かべてください。
- CPU=作業する人。計算する、比べる、次に何をするか決める
- メモリ=机の上。いま使っている書類(データ)を広げておく場所
- ストレージ(SSD)=引き出し。使わないものをしまっておく場所
作業する人は、机の上に出ているものしか直接いじれません。引き出しの中身を使いたければ、まず机に出す必要があります。プログラムやデータが「起動」するとき、実際にストレージからメモリへ運ばれています。

メモリは番地つきロッカーの列
メモリの中身をもう少し細かく見ましょう。メモリは、同じ大きさの小さな箱が一直線にずらりと並んだものです。ちょうどコインロッカーの壁のようなイメージで、箱1つは1バイト(0〜255の数を1個入れられる大きさ)です。
そして重要なのは、すべての箱に通し番号が振ってあるという点です。0番、1番、2番……とすべての箱に番号があり、この番号をアドレス(番地)と呼びます。CPUは「1024番地の値を持ってこい」という言い方でメモリを使います。名前ではなく番地で呼ぶ、これがメモリの世界の流儀です。
この「番地」は、第2部のポインタで主役になります。今の段階では、メモリの箱には名前ではなく番号がついているという絵を頭に入れておくだけで十分です。C言語で int a; と書くとき、実際には空いているロッカーを1つ確保して、そこに a という呼び名を貼っているだけ、という見方ができるようになります。
数の感覚もつかんでおきましょう。「メモリ8GB」のパソコンなら、箱がおよそ80億個並んでいることになります。文字1つがだいたい1〜3個の箱を使うので、80億個というのは相当な広さです。それでも、写真や動画を何十枚も開けばすぐ足りなくなります。机が広いほど、同時にたくさんの作業を広げられる——メモリを増やすと動作が快適になるのは、そういう理屈です。
電源を切ると机の上は消える
メモリのもう一つの性質は、電源を切ると中身がすべて消えることです(揮発性といいます)。作業中の書類は、机の上に置きっぱなしでは残りません。だからファイルに保存する、という操作が必要になります。
なお、CPUの内部にはさらに小さくて速い置き場(レジスタ、キャッシュ)があります。作業する人の手のひらと手元のメモ帳のようなものです。今は「CPUの中にも、ごく少量の超高速な置き場がある」とだけ知っておけば十分です。速い置き場ほど小さく、大きい置き場ほど遅い——この関係はコンピュータのあらゆる場所に現れる法則で、プログラムの速さを考えるときの基本になります。