翻訳と辞書
Words near each other
・ C型肝炎ウイルス
・ C型駆逐艦
・ C大阪
・ C層
・ C層位
・ C平均法
・ C形シングルクランクプレス
・ C形ダブルクランクプレス
・ C形ナックルプレス
・ C形横形シングルクランクプレス
C文字列
・ C有糸分裂
・ C末端
・ C末端アミノ酸残基
・ C波
・ C減数分裂
・ C目盛
・ C種接地
・ C空間
・ C端残基


Dictionary Lists
翻訳と辞書 辞書検索 [ 開発暫定版 ]
スポンサード リンク

C文字列 : ウィキペディア日本語版
ヌル終端文字列
プログラミングにおいて、ヌル終端文字列(ヌルしゅうたんもじれつ、)とは、文字配列に格納し、ヌル文字'\0'ASCIIコードではNUL)でその終端を表した文字列である。C言語等で用いられることからC文字列()とも言い、ASCIIコードの後にゼロ(zero)があることからASCIIZとも呼ばれる〔文字はASCIIだけに限らないことに注意〕。
ヌル終端文字列の長さは、文字列の先頭から見て最初のヌル文字を発見することでしかわからない。その計算量は文字列長に比列する(O(''n''))。また、ヌル文字そのものは文字列に含めることはできず、ヌル文字は終端に1つだけ存在する。
== 歴史 ==
ヌル終端文字列は、PDP-11アセンブリ言語.ASCIZディレクティブ、および、PDP-10のマクロアセンブリ言語であるのASCIZディレクティブとして導入された。これらはC言語の開発に先行するものであるが、その後は他の形が文字列がよく使われた。
C言語(およびそれから派生した言語)の開発において、メモリは非常に限られたものだったため、文字列長を保存するのにオーバーヘッドが1バイトだけで済むのは魅力的であった。その当時よく使われていたのは「Pascal文字列」で(初期のMicrosoft BASICでも使われていた)、これは、文字列長を先頭に数値で格納していた。この方式ならばヌル文字を文字列に含めることが可能であり、また、文字列長を求めるのが1回のメモリアクセスだけで済む(計算量が O(1) の定数時間になる)。しかし、C言語の開発者であるデニス・リッチーは、既にBCPLで確立していたヌル終端を選択した。これは、文字列のカウントを8ビットまたは9ビットのスロットに格納することで文字列長が制限されるのを避けるためと、カウントを維持する方法は終端を用いる方法よりも、彼の経験上使いやすくなかったためである〔Dennis M. Ritchie (1993). development of the C language . Proc. 2nd History of Programming Languages Conf.〕。
このC言語の設計は、CPUの命令セットの設計に影響を与えた。1970年代から1980年代にかけてのいくつかのCPU(例えばザイログZ80DECVAX)は、文字列長が前に置かれた文字列を取り扱うための命令が存在した。しかし、ヌル終端文字列が主流となったことにより、"Logical String Assist"命令をIBM ES/9000 520に加えるという1992年のIBMの決定に見られるように、CPU設計者はヌル終端文字列を考慮に入れるようになった。
FreeBSDの開発者は『』の中で、2バイト(1バイトではない)の文字列長の使用に対するC文字列の勝利を「最も高価な1バイトの間違い(the most expensive one-byte mistake)」と言及している。

抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)
ウィキペディアで「ヌル終端文字列」の詳細全文を読む



スポンサード リンク
翻訳と辞書 : 翻訳のためのインターネットリソース

Copyright(C) kotoba.ne.jp 1997-2016. All Rights Reserved.