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

関連

なし。

Backlinks