Фигурные скобки { ... }
используются для инициализации массива . Когда вы объявляете массив, вы можете инициализировать его элементы следующим синтаксисом:
int a[3] = {1, 2, 3};
, который устанавливает для трех членов соответственно a[0] = 1
, a[1] = 2
и a[2] = 3
.
Если в списке содержится меньше значений, чем в массиве, то все остальные элементы инициализируются нулями. По приведенной выше ссылке:
Все элементы массива, которые не инициализированы явно, инициализируются неявно так же, как и объекты, которые имеют c продолжительность хранения.
Ваш Массив указателей имеет 10 элементов, но в списке инициализатора есть только одно значение, поэтому все остальные устанавливаются в ноль (как и первый элемент, явно).
На самом деле вы используете NULL
только в Сама проблема, как вы могли бы написать (более четко, ИМХО):
struct Node *Bucket[10] = {NULL, };
, поскольку макрос NULL
обычно определяется следующим образом:
#define NULL ((void *)0)
Примечание: завершающий запятая, которую я указал в списке инициализаторов, otional , но (опять же, IMHO) проясняет (э), что вы знаете, , есть больше элементов в массиве, и что вы сознательно используете правило «неявной инициализации в ноль». Для обсуждения см. Здесь: История запятой в грамматиках языка программирования .
Не стесняйтесь просить дальнейших разъяснений и / или объяснений.