int a[5] = {};
и
int a[] = {};
не являются допустимыми определениями C.
В GNU C (C с расширениями gcc) вы можете использовать пустой {}
, и он считается таким же, как {0}
.
Обратите внимание, что int []
является неполным типом. При инициализации массива неполного типа с явными инициализаторами тип завершается, и тогда количество элементов массива равно количеству элементов в заключенном в скобки списке инициализаторов.
Итак, int a[] = {0};
определяет массив из 1 элемента в C, а в GNU C int a[] = {};
делает то же самое.