accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

Re: Definition d'un "nom de tableau"

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  fr.comp.lang.c ] 

Retour : Accueil du site fr comp lang c   charte stats de ce groupe


  Sujet:   Re: Definition d'un "nom de tableau"  
 De: maurettepie...@wanadoo.fr (Pierre Maurette)
 Groupes: fr.comp.lang.c
 Organisation: Service de news de lacave.net
 Date: 01. Apr 2008, 20:52:16
 References: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
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


DateSujet  Auteur
01.01.
o 
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)