Ответ 1
Все строковые литералы имеют неявный нулевой ограничитель, независимо от содержимого строки.
Стандарт (6.4.5 Строковые литералы) говорит:
Байт или код нулевого значения добавляется к каждой многобайтовой последовательности символов, которая получается из строкового литерала или литералов.
Итак, строковый литерал "abc\0"
содержит неявный нулевой ограничитель, в дополнение к явному. Итак, массив a
содержит 5 элементов.