Я видел источник, в котором инициализируется массив в int arr[3] ={0,};
Что это значит? Я обычно использую этот формат int arr[3]={0};
Могу ли я знать, в чем разницаИнициализировать массив в c в формате `int a [3] = {0,};`
ответ
Это, вероятно, dup, но я сделаю снимок в любом случае.
Нет никакой разницы между int arr[3] ={0,};
и int arr[3] ={0};
.
Ref: C11 6.7.9:
initializer:
assignment-expression
{ initializer-list }
{ initializer-list , }
Обе формы списков инициализаторов считаются Инициализаторы. Форма с запятой в конце предпочтительна многими, потому что упрощает перегруппировку или добавление элементов в список во время обслуживания кода.
int arr[3] ={0,};
объявляет массив из трех элементов и инициализирует первый элемент в 0. Когда вы делаете частичную инициализацию, остальная часть массива автоматически инициализируются нулями.
Реф. С11 6.7.9:
Если есть меньше инициализаторов в распорной корпусе списка, чем элементы или члены совокупности, или меньше символов в строке буквенные, используемые для инициализации массива известного размера, чем там - это элементы в массиве, остальная часть совокупности должна быть , неявно инициализированной так же, как объекты со статическим хранилищем .
Вопрос является полным дубликатом [Инициализация массива C] (http://stackoverflow.com/questions/16414622/array-initialization-c). Тем не менее, мне нравится ваш ответ лучше, чем те, которые там даны. – dxiv
Дуп, упомянутый в ответе [SO 7043372] (http://stackoverflow.com/q/7043372), является вопросом C++, тогда как это для C. Предпочтительно, чтобы вопросы C дублировались на другие вопросы C. –