Подтвердить что ты не робот

Инициализация массива char до строкового значения, являются ли неинициализированные индексы равными нулю?

Если у меня есть следующее:

char test[10] = "#";

Является ли test[1] через test[9] гарантией \0? Или только test[1] гарантированно \0?

4b9b3361

Ответ 1

Это определение

char test[10] = "#";

эквивалентно

char test[10] = { '#', '\0' };

То есть два элемента массива инициализируются явно инициализаторами. Все остальные элементы массива будут инициализированы нулем, что неявно они будут установлены в tto '\ 0'

В соответствии со стандартом С++ (раздел 8.5.2 массивы символов)

3 Если количество инициализаторов меньше, чем элементов массива, каждый элемент, явно не инициализированный, должен быть нулевым инициализированным (8.5).