質問: C言語,プログラミング
回答: NULL は、空を表す特別な意味で用いられる事が多く、データの長さに関係なく「からっぽ」を使う場合に用います。 Cだと、ポインタを入れる変数などに多いです。ポインタはCPUのアーキテクチャにより長さが異なるので、簡単に言えば実行環境によって 32bit だったり、64bit だったりします。 データの長さに依存せず、プログラム上の意味として「からっぽ」を表します。 '\0' は、文字コード 0 の文字 = 8bit ですので、あくまでも文字の1要素です。 UNIX/Linux では、文字列は文字の集合で、終端が \0 という規定になっていますから、 "ABC" も実はメモリー上にには、'A', 'B', 'C', '\0' と4文字分のデータが展開されます。文字列の終端を表します。 EOF は End of File の意味で使う事が多く、これは具体的な値の規定はありません。処理系に依存します。 ファイルを読み込んでいて、EOF で定義したデータ並びがあると、そこがファイルの終端だという判断に使います。 -1 であったり、0xFFFFFFFF とか様々な値がありますが、EOF として事前に定義された値を用います。 feof() などは、そのルールに従い取り込んだデータに上記のパターンがない間は、0 を返すといった処理をしています。