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 T: typedef for 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: array of signed int with dimension of constant expression 3 signed int p1: const array of signed int with dimension of constant expression 3 signed int p2: static array of signed int with dimension of constant expression 3 signed int p3: const static array of signed int with dimension of constant expression 3 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: array of signed int with dimension of constant expression 3 signed int p1: const array of signed int with dimension of constant expression 3 signed int p2: static array of signed int with dimension of constant expression 3 signed int p3: const static array of signed int with dimension of constant expression 3 signed int returning signed int with body CompoundStmt