![]() ![]() ![]() |
|
L a n g a g e C
L a g é n é r a t i o n d e t y p e s
Les déclarateurs peuvent être composés pour former des types plus compliqués :
Ce type est composé des déclarateurs tableau [] et pointeur *. Les déclarateurs de tableaux et de fonctionx sont prioritaires par rapport aux déclarateurs de pointeur, d'où l'utilisation de parenthèses :
int *(*x) [10]; signifie que : *(*x) [i] est de type int (entier)Le type composé obtenu doit être valide. En particulier :
Typedef
Les déclarations typedef permettent de nommer des types composés. La syntaxe est la même que pour déclarer un identificateur, le tout précédé du mot clé typedef. L'identificateur devient alors un nom de type, le type étant celui qui aurait été assigné à l'identificateur si la déclaration avait été une déclaration normale :
Les types anonymes
Il peut parfois être utile de référencer un type sans lui donner de nom. C'est le cas lors de l'écriture d'expressions de conversion de type (opérateur de cast), de calcul de taille de type (opérateur sizeof) ou de l'écriture de prototypes de fonctions. Un déclarateur de type anonyme est un déclarateur de type standard dans lequel a été supprimé l'identificateur :
Exemple d'utilisation :
Cette déclaration pourrait être le prototype d'une fonction calculant le zéro d'une fonction réelle quelconque entre deux bornes réelles. La fonction zero pourrait être appelée comme ceci :
Les conversions explicites
Un nom de type placé entre parenthèses, suivi d'une expression provoque la conversion dans le type indiqué de la valeur de l'expression. Cette construction s'appelle "cast". Le type peut être anonyme ou être un nom de typedef. Il ne peut être ni une instruction, ni un tableau, ni une fonction. Par exemple, si la taille du type short est 16 bits et celle du type long est 32 bits:
Ces instructions affectent à chaque fois la valeur 0xFF. Dans les deux premiers cas, les conversions implicites auraient conduit au même résultat. De même : (unsigned long) (unsigned short) 0xFFFFFF vaut 0x0000FFFF.
|
![]() |
![]() |
![]() |
© 2000-2025 Exood4 Studio. Tous droits réservés. |