Re: Definition d'un "nom de tableau"
[ Nouvelle discussion
| Répondre au groupe
|
fr.comp.lang.c ]
Francois, le 19/03/2008 a écrit :
> Jean-Marc Bourguet a écrit :
>> Francois <mathsattacks@free.fr> writes:
>>
>>> J'ai encore une question sur les tableaux que je me posais. Comment
>>> déclare-t-on un tableau de 10 pointeurs sur entiers par exemple ?
>>
>> int *p[10];
>
> Alors ça par exemple. Merci pour cette réponse rapide.
>
>
> Mais la déclaration "int *p[10] ;" ne fait-elle pas de p un pointeur sur un
> tableau de 10 entier plutôt ?
>
> Où alors c'est une histoire de parenthèses implicites et de règles de
> priorité peut-être ?
>
> "int *(p[10]) ;" déclare p comme un tableau de 10 pointeurs sur des entiers.
>
> "int (*p)[10] ;" déclare p comme un pointeur sur un tableau de 10 entiers.
>
> Est-ce juste ? A moins que ce soit exactement l'inverse ? J'ai un peu de mal
> avec les déclarations de pointeurs.
On peut écrire (parmi d'autres plus délirants):
int *a = NULL;
int * a = NULL;
int* a = NULL;
Personnellement, mais ce n'est sans doute pas un BON conseil, je
préfère la troisième, et surtout je lis: a est un int*. Un peu comme:
typedef int* pint;
pint a = NULL;
La première forme, ou le "déplacement" du '*', me sert (m'a servi) de
mnémotechnique pour: *a est un int.
Lire:
int* p[10];
est alors sans doute plus facile au débutant.
La raison pour laquelle ce n'est pas un bon conseil, c'est le danger de
faire la faute:
int* a, b;
Notez quand même que la ligne précédente ne devrait pas être écrite
telle quelle et que:
i
nt* a = NULL, b = NULL;
doit gueuler.
En revanche:
typedef int* pint;
pint a = NULL, b = NULL;
fonctionne comme on peut l'attendre, un typedef n'étant pas un #define.
--
Pierre Maurette

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|