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