Partilhar via


C Declaradores abstratos

Um declarador abstrato é um declarador sem um identificador, consistindo em um ou mais modificadores de ponteiro, matriz ou função. O modificador de ponteiro (*) sempre precede o identificador em um declarador; os modificadores de matriz ([ ]) e função ( ( ( ) seguem o identificador. Sabendo disso, você pode determinar onde o identificador apareceria em um declarador abstrato e interpretar o declarador de acordo. Consulte Interpretando declaradores mais complexos para obter informações adicionais e exemplos de declaradores complexos. Geralmente typedef pode ser usado para simplificar declaradores. Consulte Declarações Typedef.

Declaradores abstratos podem ser complexos. Parênteses em um declarador abstrato complexo especificam uma interpretação particular, assim como fazem para os declaradores complexos em declarações.

Estes exemplos ilustram declaradores abstratos:

int *         // The type name for a pointer to type int:

int *[3]      // An array of three pointers to int

int (*) [5]   // A pointer to an array of five int

int *()       // A function with no parameter specification
              // returning a pointer to int

// A pointer to a function taking no arguments and
// returning an int

int (*) ( void )

// An array of an unspecified number of constant pointers to
// functions each with one parameter that has type unsigned int
// and an unspecified number of other parameters returning an int

int (*const []) ( unsigned int, ... )

Observação

O declarador abstrato constituído por um conjunto de parênteses vazios, ( ), não é permitido porque é ambíguo. É impossível determinar se o identificador implícito pertence dentro dos parênteses (caso em que é um tipo não modificado) ou antes dos parênteses (caso em que é um tipo de função).

Ver também

Declaradores e declarações variáveis