Я видел источник, где массив инициализируется в int arr[3] ={0,};
Что это значит? Обычно я использую этот формат int arr[3]={0};
могу ли я узнать, в чем разница?
Инициализировать массив в c в формате `int a[3]={0,};`
Ответы (1)
Вероятно, это дубликат, но я все равно попробую.
Между int arr[3] ={0,};
и int arr[3] ={0};
нет никакой разницы.
Ссылка: C11 6.7.9:
initializer:
assignment-expression
{ initializer-list }
{ initializer-list , }
Обе формы списков инициализаторов считаются инициализаторами. Многие предпочитают форму с запятой в конце, потому что она упрощает изменение порядка или добавление элементов в список во время обслуживания кода.
int arr[3] ={0,};
объявляет массив из трех элементов и инициализирует первый элемент равным 0. При частичной инициализации остальная часть массива автоматически инициализируется нулями.
Ссылка С11 6.7.9:
Если в списке, заключенном в фигурные скобки, инициализаторов меньше, чем элементов или членов агрегата, или если в строковом литерале, используемом для инициализации массива известного размера, меньше символов, чем элементов в массиве, оставшаяся часть агрегата должна быть инициализированы неявно так же, как объекты со статической продолжительностью хранения.