Ответ 1
Это определение
char test[10] = "#";
эквивалентно
char test[10] = { '#', '\0' };
То есть два элемента массива инициализируются явно инициализаторами. Все остальные элементы массива будут инициализированы нулем, что неявно они будут установлены в tto '\ 0'
В соответствии со стандартом С++ (раздел 8.5.2 массивы символов)
3 Если количество инициализаторов меньше, чем элементов массива, каждый элемент, явно не инициализированный, должен быть нулевым инициализированным (8.5).