解決済みの質問

NULL

NULLと、文字配列の終端文字、\0ヌル文字は、まったく同じものですか?

nullはポインタなんですか?

\0はヌル文字と呼べばいいんですか?

教えてください。

投稿日時 - 2006-11-10 11:19:41

連想キーワード:

QNo.2529654

困ってます

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

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

投稿日時 - 2006-11-10 14:23:39

お礼

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

投稿日時 - 2006-11-15 11:34:03

ANo.5

1人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

ベストアンサー以外の回答(5件中 1~5件目)

ANo.6

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

投稿日時 - 2006-11-12 18:17:53

お礼

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

投稿日時 - 2006-11-15 11:35:04

ANo.4

一応指摘しておくと、NULLはC/C++の言語仕様で規定されています。ただし、言語本体が持っているのではなく、ヘッダで定義されます。
ちなみに、ヘッダがファイルであるかどうかは言語仕様では規定されていません。

nullの読み方については、日本ではドイツ語の数詞であるnull(0の意味)の方が馴染みがあるので、「ヌル」と発音するのでしょう。英語のnullも、元々はドイツ語からの借用語ですから、「ナル」と読むのは単に訛っているだけですね。
ちなみに、'\0'が「ナル文字」なのは、英語やドイツ語の発音はどうででもよくて、標準規格でそう定義されているから、あくまでも日本語で「ナル文字」なのです。

投稿日時 - 2006-11-10 13:42:25

お礼

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

投稿日時 - 2006-11-15 11:32:01

ANo.3

基本的には他の回答者さんの通りで、値としてはゼロですが、型が違うものです。

NULL は正確にいうと C/C++ の言語では規定されていません。基本的には include ファイルで定義されているものです。

以下は余談。

もうずいぶんと昔になりますが(C以前のPL/Iの頃)、入社したてのころ、英語が文字通りペラペラの先輩がいて、「ヌル」と読んだら、「ヌルなんて気持ちが悪い!正しくはナルでしょ!」と怒られました。でもなぜか日本では皆「ヌル」と呼ぶようになってしまいましたネ。

投稿日時 - 2006-11-10 11:53:30

お礼

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

投稿日時 - 2006-11-15 11:29:59

ANo.2

「値」は同じですが「型」が違います。

ヌルという言葉のいうそもそもの言葉の意味はゼロです。ですから、ヌルとあれば0という値のことです。ですが C、C++ には型という物が存在するのでその違いがあります。

NULL はポインタが 0 であるということです。Cではその定数として使われます。
ex. char* p = NULL;

\0 は文字コードが 0 であるということです。
ex. char c = '\0';

>nullはポインタなんですか?
そういう意味のときもあります。前後関係でかわります。

>\0はヌル文字と呼べばいいんですか?
そう呼ばれることがあります。

投稿日時 - 2006-11-10 11:30:44

お礼

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

投稿日時 - 2006-11-15 11:28:11

ANo.1

> NULLと、文字配列の終端文字、\0ヌル文字は、まったく同じものですか?

まったく別のものです。
混同したとしても、たまたまコンパイルでき、たまたま期待通りに動くことがあるというだけです。

> nullはポインタなんですか?

nullというのは、C/C++にはありません。

> \0はヌル文字と呼べばいいんですか?

それでも構いませんが、規格上は「ナル文字」です。

投稿日時 - 2006-11-10 11:26:35

お礼

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

投稿日時 - 2006-11-15 11:25:39

あわせてチェックしたい
  • ポインタ ...
  • ポインタ配列 ...
  • ポインタ配列 ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら