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

char test[10] = "#";

Гарантированно ли с test[1] по test[9] будет \0? Или только test[1] гарантированно будет \0?

25
Mark Ingram 18 Авг 2014 в 15:19

1 ответ

Лучший ответ

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

char test[10] = "#";

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

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

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

Согласно стандарту C ++ (раздел 8.5.2 Символьные массивы)

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

36
Vlad from Moscow 18 Авг 2014 в 21:04
Спасибо, у вас есть строка из спецификации, в которой говорится об этом?
 – 
Mark Ingram
18 Авг 2014 в 15:26