a1: open array of signed int a2: variable length array of signed int a4: array of double with dimension of constant expression 3.0 double m1: open array of array of signed int with dimension of constant expression 3 signed int m2: variable length array of variable length array of signed int m4: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int fred: function accepting unspecified arguments returning signed int with body CompoundStmt Declaration of a1: open array of signed int Declaration of a2: variable length array of signed int Declaration of a4: array of signed int with dimension of constant expression 3 signed int Declaration of T: array of signed int with dimension of constant expression 3 signed int mary: function with parameters T: pointer to array of constant expression 3 signed int signed int p1: const pointer to array of constant expression 3 signed int signed int p2: pointer to static array of constant expression 3 signed int signed int p3: const pointer to static array of constant expression 3 signed int signed int returning signed int with body CompoundStmt tom: function accepting unspecified arguments returning pointer to array of signed int with dimension of constant expression 3 signed int with body CompoundStmt jane: function accepting unspecified arguments returning pointer to function with parameters T: pointer to array of constant expression 3 signed int signed int p1: const pointer to array of constant expression 3 signed int signed int p2: pointer to static array of constant expression 3 signed int signed int p3: const pointer to static array of constant expression 3 signed int signed int returning signed int with body CompoundStmt