KDOC 310: なぜCの文字列はnull終端なのか?
この文書のステータス
- 作成
- 2024-11-28 貴島
- レビュー
- 2024-11-30 貴島
概要
C言語では文字列はchar型の配列である。文字列専用の組み込みデータ型はなく、そのまま配列を使う。Cの配列は単なるポインタであるから、サイズ情報は持っていない。
なのでnull終端が必要、というのだが、なぜ文字列だけなのだろうかと考えた。ほかのデータ型の配列でnull終端が必要ないのはなぜなのだろうか。
char arr[3] = {1, 2, 3}; printf("h\t%p\n", arr); printf("0\t%p\n", &arr[0]); printf("1\t%p\n", &arr[1]); printf("2\t%p\n", &arr[2]); printf("16\t%p\n", &arr[16]); printf("-16\t%p\n", &arr[-16]);
h 0x7ffdc766b455 0 0x7ffdc766b455 1 0x7ffdc766b456 2 0x7ffdc766b457 16 0x7ffdc766b465 -16 0x7ffdc766b445
関連
なし。