text: A third way of initializing a structure is to copy the value of an existing object of the same type
  /* Define variable 'b' of type point, and set members to the same values as those of 'a' */
  struct point b = a;
  Assignment
  A struct may be assigned to another struct. A compiler might use memcpy() to perform such an assignment.
  struct point {
  int x;
  int y;
  };
  int main(void)
  {
  struct point a = { 1, 3 }; /* initialized variable */
  struct point b;            /* uninitialized */
  b = a;                     /* copy member values from 'a' into 'b' */
  return 0;
  }
  Pointers to struct
  Pointers can be used to refer to a struct by its address. This is useful for passing structs to a function. The pointer can be dereferenced using the * operator. The -> operator dereferences the pointer to struct (left operand) and then accesses the value of a member of the struct (right operand).
  struct point {
  int x;
  int y;
  };
  struct point my_point = { 3, 7 };
  struct point *p = &my_point;  /* 'p' is a pointer to my_point */
  (*p).x = 8;                   /* set the first member of the struct */
  p->x = 8;                     /* equivalent method to set the first member of the struct */