Я изучаю 2D массивы в моем классе программирования. Мой учитель использовал что-то, не объясняя этого, и мне было любопытно, почему мы это использовали. Так как это связано с символом, я не уверен, как Google или искать его, так как эти символы используются в самом поиске. В любом случае код был такой:
int small[26]= {0}, large[26]={0}, i;
Зачем нужны фигурные скобки вокруг 0?
Программа, в которую входит этот код, проверяет файл и ищет каждую букву алфавита и считает их индивидуально.
Можно было бы написать еще проще
int small[26]= {}, large[26]={}, i;
Фигурные скобки означают список инициализаторов в этом случае массивов.
Предположим, например, что вы хотите определить массив с элементами 1, 2, 3, 4, 5.
Вы могли бы написать
int a[5];
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
a[4] = 5;
Однако C ++ позволяет назначать элементы массива, когда он определен. Будет выглядеть эквивалентная запись
int a[5] = { 1, 2, 3, 4, 5 };
Если инициализаторы меньше размера массива, остальные элементы будут инициализированы нулями. Например
int a[5] = { 1, 2 };
В этом случае a [0] будет равно tp 1, a [1] будет равно 2, а все остальные элементы будут равны 0.
Вы можете опустить размер массива. Например
int a[] = { 1, 2, 3, 4, 5 };
В этом случае компилятор выделит столько элементов массива, сколько имеется инициализаторов в списке инициализаторов.
Запись (действительна только в C ++. В C не допускается)
int a[5] = {};
эквивалентно
int a[5] = { 0 };
то есть все элементы массива будут инициализированы 0. В последней записи первый элемент явно инициализируется нулем, а все остальные элементы также инициализируются нулем, потому что их инициализаторы в списке инициализаторов не были указаны.
Таким же образом вы можете инициализировать и скалярные объекты. Например
int x = {10};
Разница лишь в том, что для скалярных объектов можно указывать только один инициализатор. Вы даже можете написать без оператора присваивания
int x { 10 };
Вы также можете написать
int x {};
В этом случае x будет инициализирован 0.
int Array[26]= {0};
Инициализирует все элементы в этом массиве в 0.
Как БрайанЧен упоминает ниже:
Note: int Array[26]= {1}; will initialize first element to 1 and others to 0.
По умолчанию обычные массивы локальной области видимости (например, объявленные внутри функции) остаются неинициализированными. Это означает, что ни один из его элементов не имеет какого-либо конкретного значения; их содержимое не определено в тот момент, когда массив объявлен.
Но элементы в массиве могут быть явно инициализированы к определенным значениям, когда он объявлен, заключив эти начальные значения в фигурные скобки {}.
Обратите внимание, что
int array [constant] = {};
По умолчанию инициализирует все значения. Инициализатор по умолчанию для int
это 0.
int small[26]= {0};
Устанавливает первый номер в 0 и по умолчанию инициализирует остальные.
В общем:
int array [constant] = {value initialize all indices listed here,
the rest are default initialized};