Назначенные инициализаторы

Содержание

В С99 появилась новая для С возможность, которая будет особенно полезна для программистов, работающих с разреженными массивами. Это назначенные инициализаторы. Такие инициализаторы бывают двух видов: одного вида — для массивов, а другого — для структур и объединений. Для массивов используется назначенные инициализаторы такого вида:

[индекс] = знач

где индекс указывает элемент, инициализируемый с помощью значения знач (то есть тот элемент, которому присваивается начальное значение знач). Например,

int а[10] = { [0] = 100, [3] = 200};

В данном случае инициализируются только элементы с индексами 0 и 3.

Для членов структур или объединений используется назначенные инициализаторы такого вида:

.имя-члена

Применение к структуре назначенного инициализатора позволяет легко инициализировать только нужные члены структуры. Например,

struct mystruct {
  int a;
  int b;
  int c;
} ob = { .c = 30, .a = 10 };

В данном случае член b остается неинициализированным.

Кроме того, применение назначенных инициализаторов дает возможность инициализировать структуру, даже не зная порядка расположения ее членов. Это полезно для предопределенных структур, таких как div_t, или для структур, определенных некоторыми независимыми производителями.