A type name consists of type specifiers such as int or the name of a class or struct, in combination with an abstract declarator, as described in Declarations and Abstract Declarators. The abstract declarator has the effect of modifying the base type to produce a pointer, reference or array type. It is not required if specifying a scalar type.

In the following example, the arguments to the strcpy_s function are supplied using their type names. In the case of the strSource argument, constchar is the type specifier and * is the abstract declarator: