Dichiaratori astratti CC Abstract Declarators

Un dichiaratore astratto è un dichiaratore senza un identificatore, composto da uno o più puntatori, matrici o modificatori di funzione.An abstract declarator is a declarator without an identifier, consisting of one or more pointer, array, or function modifiers. Il modificatore del puntatore (\) precede sempre l'identificatore contenuto in un dichiaratore; i modificatori di matrice ([ ]) e funzione (( )) seguono l'identificatore.The pointer modifier (**) always precedes the identifier in a declarator; array ([ ]) and function ( **( ) ) modifiers follow the identifier. Partendo da questo presupposto, è possibile determinare se l'identificatore dovrà apparire in un dichiaratore astratto e interpretare il dichiaratore di conseguenza.Knowing this, you can determine where the identifier would appear in an abstract declarator and interpret the declarator accordingly. Per altre informazioni ed esempi di dichiaratori complessi, vedere Interpretazione di più dichiaratori complessi.See Interpreting More Complex Declarators for additional information and examples of complex declarators. typedef può essere in genere utilizzato per semplificare i dichiaratori.Generally typedef can be used to simplify declarators. Vedere Dichiarazioni typedef.See Typedef Declarations.

I dichiaratori astratti possono essere complessi.Abstract declarators can be complex. Le parentesi in un dichiaratore astratto complesso specificano un'interpretazione speciale, così come fanno per i dichiaratori complessi all'interno delle dichiarazioni.Parentheses in a complex abstract declarator specify a particular interpretation, just as they do for the complex declarators in declarations.

In questi esempi vengono illustrati i dichiaratori astratti:These examples illustrate abstract declarators:

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, ... )  

Nota

Il dichiaratore astratto composto da un set di parentesi vuote ( ) non è consentito perché è ambiguo.The abstract declarator consisting of a set of empty parentheses, ( ), is not allowed because it is ambiguous. È impossibile determinare se l'identificatore implicito appartiene all'interno delle parentesi (in questo caso è un tipo non modificato) oppure le precede (in questo caso è un tipo di funzione).It is impossible to determine whether the implied identifier belongs inside the parentheses (in which case it is an unmodified type) or before the parentheses (in which case it is a function type).

Vedere ancheSee Also

Dichiaratori e dichiarazioni di variabiliDeclarators and Variable Declarations