Как указал @achai, мы обычно резервируем термин «нулевой терминатор» для использования в сочетании с char
массивами, содержащими строковые данные.Тем не менее, нет ничего плохого в том, чтобы использовать значение 0 в качестве маркера конца данных в массивах других типов, но такое соглашение отнюдь не универсально.
Вы получаете ошибку, поскольку синтаксисвашего назначения терминатора неправильно.Вы присваиваете cool_array[i]
, который имеет тип int
.Следовательно, правая часть присваивания должна быть выражением типа int
.Это может быть '\0'
или (100% эквивалент) просто 0
, но фигурные скобки ({}
) там не место.
cool_array[i] = 0;
Возможно, вы не понимаете похожий кодв объявлении из cool_array
:
int cool_array[10] = {0};
Обратите внимание, что это объявление, а не исполняемый оператор, и внутри него нет присваивания.Он содержит инициализатор для массива, но, хотя он имеет схожую форму, синтаксис и семантика отличаются от назначения.В частности, он говорит инициализировать первый элемент массива (явно) 0 и неявно инициализировать все остальные элементы (0).