The order of fields in a struct does matter – the compiler is not allowed to reorder fields, so the size of the struct may change as the result of adding some padding.
In this case, however, you are defining a so-called flexible member, an array the size of which you can change. The rules for flexible members are that
- There may never be more than one such member,
- If present, the flexible member must be the last one in the
struct, and - The
structmust have at least one member in addition to the flexible one.
Take a look at this Q&A for a small illustration on using flexible structure members.