Deklarátory abstraktu jazyka C
Abstraktní deklarátor je deklarátor bez identifikátoru, sestávající z jednoho nebo více ukazatelů, polí nebo modifikátorů funkce. Modifikátor ukazatele (*
) vždy předchází identifikátoru v deklarátoru; pole ([ ]) a modifikátory funkce ( ) se řídí identifikátorem. Když toto víte, můžete určit, kde by se identifikátor v abstraktním deklarátoru měl objevit a interpretovat tento deklarátor odpovídajícím způsobem. Další informace a příklady složitých deklarátorů najdete v tématu Interpretace složitějších deklarátorů . Obecný typedef
slouží ke zjednodušení deklarátorů. Viz Deklarace Typedef.
Abstraktní deklarátory mohou být složité. Závorky ve složitých abstraktních deklarátorech určují konkrétní interpretaci, stejně jako je tomu u komplexních deklarátorů v deklaracích.
Tyto příklady ilustrují abstraktní deklarátory:
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, ... )
Poznámka:
Abstraktní deklarátor skládající se ze sady prázdných závorek ( ), není povolen, protože je nejednoznačný. Není možné určit, zda implicitní identifikátor patří do závorek (v tomto případě je to nezměněný typ) nebo před závorky (v tomto případě je to typ funkce).