ポインタとメモリの深い関係

ポインタを制するものはC言語を制する、いや、プログラミングを制するといっても過言ではありません。 それほど大事なポインタですが、初学者にとっては理解が追いつかない部分も多いと思います。 それ以前に、「ポインタが一体何なのかよくわからない」という人も多くいるでしょう。 ここでは、ポインタがコンピューターにおける何を指しているのか、そして実際のプログラム中でポインタをどのように使用すれば良いのかを解説してゆきたいと思います。

メモリとは何かを知ろう

それではまず初めに、「メモリ」について説明します。

コンピューターは、「入力」を「演算」し、その結果を「記憶」したり「出力」する作業を行う機械です。 この作業のうち「記憶」を司る部分が、メモリにあたります。 記憶を司る部分は他にもハードディスクやフラッシュメモリなどがありますが、「演算」を司るCPUが直接データをやり取りすることができるのは、このメモリだけなのです。 つまり、メモリはコンピューターの「記憶」をしまう場所になっているのです。

コンピューターは数値しか扱えない

さて、みなさんご存知の通り、コンピューターは数値しか扱うことができません。したがって、コンピューターにとっての「記憶」とは、数値を表しています。

もっと厳密に言うと、コンピューターはONとOFFの二つの状態しか扱うことができません。一体これでどうやって数値を表すのかというと、2進法という概念を利用します。

2進法と16進法

私たちが普段使っている数値は、10進法で表されています。10進法という言葉の意味は、「10種類の文字を一桁としてあつかう」という意味です。 実際、日常生活で出会う数値は、一桁が「0123456789」の10種類の文字のうちいずれかで構成されています。 それでは、2進法という言葉は何を意味しているのでしょうか。これもそのまま、「2種類の文字を一桁としてあつかう」という意味です。

2種類の文字なので、どれを選んでも構わないのですが、ここでは一般的に利用されている「01」の2種類の文字を利用することにしましょう。

(続く…)