文字列の終端のことをNULLと呼んでる奴がいたら、NULLポインターとNULL文字を混同している確率が150%。間違った知識を教えて伝搬しているのが50%の意味。

wikipediawikiと略したり、javascriptjavaと略したり、当身返し投げを当身と呼ぶような奴と一緒ってことすね。


まあ、'\0'(ぬるもじ)==0でNULL(ぬるぽ)==0と云う実装があって、こんだけ名前が似てれば間違えない方がおかしいっちゃあおかしいですよね。
ちなみに余談ですが、NULLが0なのは規定されているけど(遠い記憶による)、これは「ポインタとの代入・比較演算の時、0値をヌルポインタとして扱う」と云う規定がされているからで、実際にどんなデータが格納されるかは環境依存なんすよね(と、id:isshikiさんに教わった)。ヌル値が0でない環境というのも、稀に、あるらしい。益々わからん。

蛇足例を挙げると、

  int* hoge = 0; // ガッ

は正しくぬるぽが代入される。が、

  int* hoge = 0:
  printf( %d\n", (int)hoge ); // 結果が不定

これは値が保証されない。まあ、99.99%0が返ってくるだろうけどね。

それはともかくとして、今日ソースを眺めてたら

  strBuffer[ strlen(strBuffer)-1 ] = NULL;

とかいうのがあって暴れだした次第なんです。うがー。きっと、正しく動くだろうけどさ…。一日胸がザワザワして仕事になりませんでした。