質問: NULLを使っているうちに感じたのが、パソコン内部ではすべてのデータは01だけで表現できるわけで、NULL(何もデータが入っていない)という概念はPCは理解できないわけで、何もデータが入っていないという認識にする値、アドレスを実際には入れていると考えました。 ただ実際には、この何も入っていないという状態を示すアドレスが一つあり、NULLというものを入れることで、それを示すという認識で正しいですか? よく考えてみると、パソコンの中の0,1というのは存在するか、しないかではなく、二つの要素であり、これらから文字通り何も存在しないという事は表現することは不可能ですよね? 皆さまのお考えをお聞かせください。
回答: NULLはマクロで、中身を見ると`0`とか`(void*)0`というようになっています。 で、(ポインタとしての)0は、コンパイラが「無効な位置を指す値」に変換してもいいことにはなっていますが、多くの処理系ではそのまま「0」としてコンパイルされます。 Unix系とか32ビットのWindowsは、プロセスごとに仮想メモリ領域を切ってあるので、「0番地」を有効範囲に入れないことで、アクセスしたらエラーが出るような仕組みになっています。