In several contexts a type name can or must be specified without an identifier. For example, in a function prototype declaration, the parameters of the function can be declared only with a type name. Also, when casting an object from one type to another, a type name is required without an associated identifier. (Section 6.4.6 has information on casting, and Section 5.5 has information on function prototypes.) This is accomplished using a type name, which is a declaration for a function or object which omits the identifier.
Table 2-1 shows examples of type names with the associated types they refer to.
| ||Pointer to
| ||Array of three pointers to |
||Pointer to an array of three
| ||Function with
no parameter specification returning a pointer to |
||Pointer to function with no parameters returning an
| ||Array of an
unspecified number of |
Table 2-1 also provides good examples
of abstract declarators. An abstract declarator is a
declarator without an identifier. The characters following the
int type name form an abstract declarator in each
[ ] , and
characters all indicate a declarator without naming a specific