『【C】初めてのC言語(16. 文字列の基本)』
https://qiita.com/nkojima/items/d87ce0cb15dd1a26f21a
> 文字列にまつわる業界ルール
> ・「C言語の文字列に関する業界ルール」として、以下の2つのルールが
>  挙げられていました。
>  ・先頭要素から順に1文字ずつ文字コードを格納して文字列を表す。
>  ・最後の文字の直後には「文字コード0の文字」を必ず格納し、それ以降の
>   メモリ空間は利用しない。
>
> #include <stdio.h>
>
> int main(void){
>   const char str1[10] = "Hello";
>   const char str2[10] = "He\0llo";
>
>   printf("%s\n", str1);
>   printf("%s\n", str2); // 「\0」が終端文字(ヌル文字)として扱われている。
>
>   return 0;
> }

文字列中に'\0'を含まない文字列リテラルなら

>  ・最後の文字の直後には「文字コード0の文字」を必ず格納し、それ以降の
>   メモリ空間は利用しない。

は正しいが、

>   const char str1[10] = "Hello";

要素数 10 ある char の配列は普通に str1[9] までアクセスは可能。
やはり文字列リテラルと char の配列で区別がついてない気がする。