Nomes de tipo
Os nomes de tipo são usados em alguns declaradores das seguintes maneiras:
Em conversões explícitas
Como argumentos do operador sizeof
Como argumentos do operador new
Em protótipos de função
Em instruções typedef
Um nome de tipo consiste em especificadores de tipo como int ou o nome de uma classe ou de um struct, em combinação com um declarador abstrato, conforme descrito em Declarações e em Declaradores abstratos. O declarador abstrato tem o efeito de modificar o tipo de base para gerar um tipo de ponteiro, de referência ou de matriz. Ele não será necessário caso esteja sendo especificado um tipo escalar.
No exemplo a seguir, os argumentos da função strcpy_s são fornecidos usando os nomes de tipo. No caso do argumento strSource, const char é o especificador de tipo e * é o declarador abstrato:
errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );