Assigning values to a structure at declaration time was confusing because it was not clear what field from the structure was being initialized. Also, adding a new field to the structure could break existing code.
C99 fixed this with designated initializers:
brush: c
struct my_struct { int field1; int field2; };
struct my_struct s = { .field1 = 2, .field2 = 4 };
Fields can be given in any order and can be omitted as needed.
Arrays can also benefit from this to create clearer code:
brush: c
int unit_array[3][3] = {
[0][0] = 1,
[1][1] = 1,
[2][2] = 1
};