In C99 (and not in C++), it's possible to initialize structs using this syntax:
struct info
{
char name[8+1];
int sz;
int typ;
};
struct info arr[] =
{
[0] = { .sz = 20, .name = "abc" },
[9] = { .sz = -1, .name = "" }
};
What happens to the unspecified fields?
They are zeroed. From the C99 standard §6.7.8 (Initialization)/21,