В С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, или для структур, определенных некоторыми независимыми производителями.