[Résolu][déclaration de variable]Pointeur
bonjour,
je me pose pas mal de question sur la compilation du C notamment celle-ci:
Code:
1 2 3 4 5 6 7
|
char* Var1,Var2;//je déclare un pointeur de char et un char
//ce qui est différent de
char *Var1,*Var2;//je déclare deux pointeurs de char |
Maintenant si je défini
Code:
1 2 3 4 5 6 7
|
typedef char* PCHAR;
PCHAR Var1,Var2;//je déclare deux pointeur
//Je pensais que bétement chaque typedef était remplacé par sa définition |
Quel est lemécanisme lors de la compilation, qui attribue correctement le type de chaque variables???
Re: [déclaration de variable]Pointeur
Citation:
Envoyé par ronan99999
je me pose pas mal de question sur la compilation du C notamment celle-ci:
Code:
1 2 3 4 5 6
|
char* Var1,Var2;//je déclare un pointeur de char et un char
//ce qui est différent de
char *Var1,*Var2;//je déclare deux pointeurs de char |
Ce qu'il faut comprendre, c'est qu'en C, le nombre d'espace n'a pas d'importances, et que certains 'tokens' n'en on même pas besoins. Celà signifie que
Code:
1 2 3 4 5 6
|
char*Var1;
char *Var1;
char* Var1;
char * Var1;
char * Var1; |
ont strictement la même sémantique.
Donc ceci :
est équivallent à
Code:
1 2 3
|
char *Var1;
char Var2; |
car c'est 'char' qui est mis en facteur, et non 'char *'. On ne sait pas mettre 'char *' en facteur, sauf à utiliser ton astuce du typedef.
Ceci-dit, j'évite d'utiliser l'opérateur ',' pour les définitions de variables. C'est rarement utile et souvent source de confusion... De plus, ça ne facilite ni la maintenance, ni l'adaptation du type en fonction des besoins, ni la réduction de la portée, ni la modularisation du code.
"one definition by line rulez"
http://emmanuel-delahaye.developpez....tes.htm#portee