При инициализации массива char заполненный или неинициализированный оставшийся пробел заполнен нулями? - PullRequest
7 голосов
/ 04 января 2011

С учетом

char foo[1024] = "bar";

Это инициализирует foo для содержания 'b', 'a', 'r', 0. Остальные 1020 символов инициализируются нулем или неинициализируются?

Я думаю, что это то же самое, что и `char foo [1024] = {'b', 'a', 'r', '\ 0'}; и как и при инициализации агрегатов, любой не упомянутый элемент инициализируется нулем?

Ответы [ 2 ]

9 голосов
/ 04 января 2011

Если массив / агрегат инициализируется каким-либо образом [edit: с помощью статического инициализатора], оставшиеся неопределенные записи обнуляются, да.

3 голосов
/ 04 января 2011

Да, неинициализированные элементы массива будут равны нулю.Пример:

Если инициализатор предоставляет слишком мало элементов, для остальных элементов массива предполагается 0:

int v5[8] = { 1 , 2 , 3 , 4 };

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

int v5[] = { 1 , 2 , 3 , 4 , 0 , 0 , 0 , 0 };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...