Seulement x
est un pointeur vers int; y
et z
sont des entiers réguliers.
Ceci est un aspect de la syntaxe de déclaration C qui déclenche certaines personnes. C utilise le concept d'un , qui introduit le nom de l'objet déclaré ainsi que des informations de type supplémentaires non fournies par le spécificateur de type. Dans la déclaration
int* x, y, z;
les déclarateurs sont *x
, y
et z
(c'est un accident de la syntaxe C que vous pouvez écrire soit int* x
ou int *x
, et cette question est l'une des raisons pour lesquelles je recommande d'utiliser le second style). L'int-ness de x
, y
et z
est spécifié par le spécificateur de type int
, tandis que le pointeur de x
-ness est spécifiée par le declarator *x
(IOW, l'expression *x
est de type int
).
Si vous voulez que les trois objets soient des pointeurs, vous avez deux choix. Vous pouvez les déclarer comme pointeurs explicitement:
int *x, *y, *z;
ou vous pouvez créer un typedef pour un pointeur int:
typedef int *iptr;
iptr x, y, z;
Rappelez-vous que lors de la déclaration d'un pointeur, la *
fait partie du nom de la variable , pas le type.
Question éditée, car elle n'a rien à voir avec l'objectif C –
Je sais qu'il y a une copie de cette question quelque part ici (j'ai déjà lu ceci avant) –