番兵 【sentinel】

概要

番兵(sentinel)とは、コンピュータプログラムで、データ列の終端を表す特殊なデータ。あらかじめ長さが決定できない可変長のデータを使う際などに用いられることがある。

特定の値に終了の意味を与え、データ列を端から順に読み込んで処理する際に、その値が出現したらループを打ち切って終了するといった使い方をする。C言語で文字列をchar型の配列として格納する際、末尾にヌル文字(\0)を格納して終端の合図とする例が有名である。

また、探索アルゴリズムで、探索対象のデータ列の末尾に探すデータそのものを付け加える手法を「番兵法」と呼び、付け加えた終端のデータを番兵という。端から順にデータを照合していく際、番兵がなければ「データ列の終端に達したか」と「探しているデータに一致したか」をループごとに毎回別々に判定しなければならないが、番兵を付け加えることで「一致したか」のみを調べれば良くなる。

(2021.10.29更新)