Нет, если вы не укажете размер массива и не используете строковый литерал в качестве инициализатора, размер и содержимое массива будут точно соответствовать вашим инициализаторам.
ВВ вашем случае массив foo
будет состоять ровно из трех char
элементов, содержащих (по порядку) 0x31
, 0x32
и 0x33
.
Если вы используете строковый литерал в качестве инициализатора, тогдамассив будет включать терминатор.И если вы укажете размер, превышающий количество инициализаторов (например, char foo[4]
в вашем примере с тремя инициализаторами), то остальные элементы будут инициализироваться нулями (что равно символу конца строки).
Также обратите внимание, что даже если вы используете строковый литерал в качестве инициализатора, но указали размер меньший , чем инициализатор, массив также не будет завершен.