В C / C ++, если вы инициализируете только первый элемент массива известного размера значением, остаток будет заполнен нулями, поэтому:
int foo[10] = {0};
будет делать именно то, что вы хотите.
Это также работает для структур:
struct bar {
int x;
int y;
char c;
} myBar = {0};
инициализирует всех членов до 0.
Стандарт (C99 - 6.7.8 / 12 - Инициализация) гласит:
Если в списке, заключенном в фигурные скобки, меньше инициализаторов, чем элементов или членов агрегата или меньше символов в строковом литерале, используемом для инициализации массива известного размера, чем элементов в массиве, то остаток от агрегат должен быть инициализирован неявно так же, как объекты, которые имеют статическую продолжительность хранения.
В C грамматика требует, чтобы внутри фигурных скобок было хотя бы одно «выражение-присваивание». «Выражение присваивания» может представлять собой множество вещей, от константы или идентификатора до более сложных выражений. Однако пустая строка не квалифицируется как «выражение-присваивание», поэтому между скобками должно быть что-то.
В C ++ грамматика специально разрешает инициализатор '{}', поэтому следующее также будет инициализировать массив нулем:
int foo[10] = {};
Вероятно, также стоит отметить, что в C ++ записи, которые не имеют определенного значения инициализатора в списке инициализации, будут «инициализированы значением» или «инициализированы по умолчанию», что может отличаться от инициализации нулями в зависимости от что такое конструкторы для типа переменной и соответствует ли компилятор стандарту C ++ 98 или стандарту C ++ 03 (возможно, это единственное различие между C ++ 98 и C ++ 03). Вся ситуация со значением в сравнении с инициализацией по умолчанию довольно сложна, поэтому, если вам интересно, посмотрите этот ответ: Есть ли в скобках после имени типа разница с новым? .
К счастью, разница не вызывает особых проблем на практике, хотя, если вы натолкнетесь на нее, она, возможно, на некоторое время поцарапает голову, пытаясь выяснить, каким на самом деле должно быть поведение. Я обычно не особо об этом думаю - у меня болит голова.