Compatibility of arrays

Two compatible array types must have compatible element types. In addition, if each array has a size specifier that is an integer constant expression, both size specifiers must have the same constant value. For example, the types of the following two arrays are not compatible:
  char ex1[25];
  const char ex2[25];
The composite type of two compatible array types is an array with the composite element type. The composite type of two compatible arrays is determined by the following rules:
  1. If one of the original types is an array of known constant size, the composite type is an array of that size. For example:
      // The composite type is char [42].
      char ex3[];
      char ex4[42];
  2. Otherwise, if one of the original types is a variable length array, the composite type is that type.