Udostępnij za pośrednictwem


Deklaratory abstrakcyjne języka C

Abstrakcyjny deklarator jest deklaratorem bez identyfikatora, składający się z jednego lub więcej wskaźników, tablicy lub modyfikatorów funkcji.Modyfikator wskaźnika (*) zawsze poprzedza identyfikator w deklaratorze; modyfikatory tablicy ([]) i funkcji ( () ) śledzą identyfikator.Wiedząc o tym, można określić, gdzie identyfikator powinien pojawić się w abstrakcyjnym deklaratorze i odpowiednio zinterpretować deklarator.Zobacz Interpretacja bardziej złożonych deklaratorów, aby uzyskać dodatkowe informacje i przykłady dotyczące złożonych deklaratorów.Ogólnie typedef może służyć do uproszczenia deklaratorów.See Deklaracje Typedef.

Abstrakcyjne deklaratory mogą być złożone.Nawiasy w złożonych abstrakyjnych deklaratorach określają szczególną interpretację, tak jak robią dla złożonych deklaratorów w deklaracjach.

Poniższe przykłady ilustrują abstrakcyjne deklaratory:

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

[!UWAGA]

Abstrakcyjny deklarator składający się z szeregu pustych nawiasów (), jest niedozwolony, ponieważ jest niejednoznaczny.Nie istnieje możliwość ustalenia, czy domniemane identyfikator należy wewnątrz nawiasów (w tym przypadku jest to niemodyfikowany typ) lub przed nawiasami (w tym przypadku jest typ funkcji).

Zobacz też

Koncepcje

Deklaratory i deklaracje zmiennych