Si utiliza una lista initialiser convencional, los valores de los elementos se asignan en orden, por lo que si usted tiene esta estructura:
typedef struct _foo {
int a;
int b;
} foo_t;
entonces este initialiser asigna explícitamente a
y no b
:
foo_t value = { 7 };
sin los inicializadores designados, los únicos elementos que se pueden omitir son los que se han declarado al final
usi ng inicializadores designados, se puede omitir elementos que se declaran en cualquier lugar:
foo_t value = { .b = 8 };
modo se omite el inicializador para value.a
, a pesar de ser el primer valor de la estructura.