• ベストアンサー

NULL

NULLと、文字配列の終端文字、\0ヌル文字は、まったく同じものですか? nullはポインタなんですか? \0はヌル文字と呼べばいいんですか? 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.5

NULLに関してはいろいろあるようでFAQ(よくある質問とその回答)の一項目にもなっています。 C FAQ 5 http://www.kouno.jp/home/c_faq/c5.html NULL と '\0' の違い http://www.kis-lab.com/serikashiki/C/C01.html CとC++で微妙にNULLの定義が違ってたりしますがそれに関してはこちらを。 C MAGAZINE - プログラミングの禁じ手Web版 C++編 - 理念の誤解に関するパターン http://www.cmagazine.jp/src/kinjite/cpp/idea.html

startover
質問者

お礼

回答ありがとうございます。 解りやすいページを紹介してくださって、 ありがとうございます!

その他の回答 (5)

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.6

NULLはアドレス0x00000000(※0x00が格納されている)のこと、 文字配列の終端は定義上、0x00。 同値ですが、"\0"だと、ヒープ領域に自動的に確保されてしまいます。 ですから、アドレスは異なります。

startover
質問者

お礼

回答ありがとうございます。 勉強にになります!

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

一応指摘しておくと、NULLはC/C++の言語仕様で規定されています。ただし、言語本体が持っているのではなく、ヘッダで定義されます。 ちなみに、ヘッダがファイルであるかどうかは言語仕様では規定されていません。 nullの読み方については、日本ではドイツ語の数詞であるnull(0の意味)の方が馴染みがあるので、「ヌル」と発音するのでしょう。英語のnullも、元々はドイツ語からの借用語ですから、「ナル」と読むのは単に訛っているだけですね。 ちなみに、'\0'が「ナル文字」なのは、英語やドイツ語の発音はどうででもよくて、標準規格でそう定義されているから、あくまでも日本語で「ナル文字」なのです。

startover
質問者

お礼

回答ありがとうございます。 いろいろ勉強になります。 ありがとうございました。

  • chirubou
  • ベストアンサー率37% (189/502)
回答No.3

基本的には他の回答者さんの通りで、値としてはゼロですが、型が違うものです。 NULL は正確にいうと C/C++ の言語では規定されていません。基本的には include ファイルで定義されているものです。 以下は余談。 もうずいぶんと昔になりますが(C以前のPL/Iの頃)、入社したてのころ、英語が文字通りペラペラの先輩がいて、「ヌル」と読んだら、「ヌルなんて気持ちが悪い!正しくはナルでしょ!」と怒られました。でもなぜか日本では皆「ヌル」と呼ぶようになってしまいましたネ。

startover
質問者

お礼

すばやい回答ありがとうございます。 おもろい余談もありがとう!

  • shukugawa
  • ベストアンサー率30% (80/264)
回答No.2

「値」は同じですが「型」が違います。 ヌルという言葉のいうそもそもの言葉の意味はゼロです。ですから、ヌルとあれば0という値のことです。ですが C、C++ には型という物が存在するのでその違いがあります。 NULL はポインタが 0 であるということです。Cではその定数として使われます。 ex. char* p = NULL; \0 は文字コードが 0 であるということです。 ex. char c = '\0'; >nullはポインタなんですか? そういう意味のときもあります。前後関係でかわります。 >\0はヌル文字と呼べばいいんですか? そう呼ばれることがあります。

startover
質問者

お礼

すばやい回答ありがとうございます。 なんとなくですが、違いが解りました! ありがとうございました。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

> NULLと、文字配列の終端文字、\0ヌル文字は、まったく同じものですか? まったく別のものです。 混同したとしても、たまたまコンパイルでき、たまたま期待通りに動くことがあるというだけです。 > nullはポインタなんですか? nullというのは、C/C++にはありません。 > \0はヌル文字と呼べばいいんですか? それでも構いませんが、規格上は「ナル文字」です。

startover
質問者

お礼

すばやい回答ありがとうございます。 参考にします! ありがとうございました。

関連するQ&A

専門家に質問してみよう