「NUL NULL nul null '\0'」について
「NUL NULL nul null」の読み方
英語読みでは「ナル」のように聞こえる。
Web辞書で検索すると多くの音声辞書は「ナル」であったが「ヌル」も1つあった。
将来,英語でのディスカッションを想定すると「ナル」と読んでおいたほうが良さそうだ。
参考(馴染みのある単語はu派)
読み方aの単語:ull,cull,hull,kull,lull,mull
読み方uの単語:bull,full,pull
◯NUL
シリアル通信で7bitコードを送受信している際に0x00から0x1fまでは文字コードではなく制御コードであった。
これらは,文字ではなく通信機器を制御するコードであった。
この中で0x00はなにもしない制御コードで,NULで表現されていた。
NUL characterと呼ばれることもあった。
◯NULL
C言語において,ポインタ定数で,どこも指さないことを示す値として用いられている。(NULLPointer)
#define NULL (void*(0))
と定義されている。そのため,char ch; と宣言された後で
ch=NULL; や if (ch==NULL) ...
char mystring[]={'a','b','c',NULL};
は文法違反なので,コンパイラは警告を出す。エラーにならないのは無理やりキャストが行われるため。
VisualStudioの例:
warning C4047: '=': 間接参照のレベルが 'char' と 'void *' で異なっています。
GCCの例:
warning: assignment makes integer from pointer without a cast [-Wint-conversion]
先の誤りの例の場合は,
ch='\0'; if (ch=='\0') ...
char mystring[]={'a','b','c','\0'};
と書くのが正解。
◯NULL
C++では
#define NULL 0
になっているので,数値の0として使える。
NULLPointerとしてはnullptr(nullptr_t型)が定義されている。
◯NULL,null
データベースではNULLとnullは区別がない。
NULLは何もないことを意味する。
ある値xがNULLであるとき,(x<0)も(0<=x)も偽になる。
NULLは0でもなく,0文字で構成されている文字列でもない
(x=0のとき,(x=NULL)は偽,x=""のとき(x=NULL)は偽)
xがNULLかどうか調べるときには,x is NULLまたはx is not NULLと書く
◯nul
DOSのスクリプトでnulデバイスを指す。
echo hogehoge
画面に「hogehoge」が表示される
echo hogehoge >tmp.txt
ファイルtmp.txtに「hogehoge」が書き込まれる
echo hogehoge >nul
nulの場合はどこにも出力されない
◯null
UNIXのスクリプトでnullデバイスを指す。
echo hogehoge
画面に「hogehoge」が表示される
echo hogehoge >tmp.txt
ファイルtmp.txtに「hogehoge」が書き込まれる
echo hogehoge >/dev/null
/dev/nullの場合はどこにも出力されない
◯null
javaでは参照型変数に代入することができて,変数が存在するが実体がない状態
を指示することが出来る。
数値の0ではないのでint型の変数に代入することはできない。
◯'\0'
Cでは数値の0を示しているが,文字列の終端を表す目印として用いられている。
'\0'のことは「エンゼロ」「エンマークゼロ」と読むようだが,
文字コードによっては「バックスラッシュゼロ」と読むこともある。
'\0'のことをヌル文字(日本語特有)(英語ではNUL character)と読む習慣もあるが,
これは混乱(NULLをchar型変数に代入したくなる。)のもとなので安全運転愛好者はこの習慣に従わない方が良い。