text: Declaration The general syntax for a struct declaration in C is:
  struct tag_name {
  type member1;
  type member2;
  /* declare as many members as desired, but the entire structure size must be known to the compiler. */
  };
  Here tag_name is optional in some contexts.
  Such a struct declaration may also appear in the context of a typedef declaration of a type alias or the declaration or definition of a variable:
  typedef struct tag_name {
  type member1;
  type member2;
  } struct_alias;
  Initialization
  There are three ways to initialize a structure. For the struct type
  /* Declare the struct with integer members x, y */
  struct point {
  int x;
  int y;
  };
  C89-style initializers are used when contiguous members may be given.
  /* Define variable 'a' of type point, and initialize its first two members in place */
  struct point a = { 1, 2 };
  For non contiguous or out of order members list, designated initializer style may be used
  /* Define variable 'a' of type point, and set members using designated initializers */
  struct point a = { .y = 2, .x = 1 };
  If an initializer is given or if the object is statically allocated, omitted elements are initialized to 0.