A quoi sert le & devant un tableau?

Résolu
alin -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
voici un exple:

#define N 5
char T[N]; int i;
printf("introduire les elements du tableau");
for (i=0; i<=N; i++)
scanf("%c", &T[i]); //scanf("%c",T+i);


A quoi bon mettre & devant T ?
Aussi, pourquoi T+i est équivalent à &T[i] ?

merci
A voir également:

3 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Le & n'est pas mis devant le tableau mais devant la case T[i] qui est un char.
Parce qu'en paramètre de scanf il faut donner un pointeur de la valeur à modifier.
Or T[i] est un char, il faut donc utiliser son pointeur associé : &T[i]

Ton code est équivalent à faire :

char c;
scanf("%c",&c);
T[i]=c;

Ensuite, les tableaux ont des espaces mémoires contiguës, c'est à dire que toutes les cases du tableau sont les unes après les autres en mémoire.
Donc si le tableau est référencé par le pointeur T, alors sa première case est pointé à la même adresse mémoire T (on peux aussi dire T+0), ensuite la case 1 du tableau est juste après la case 0, donc pointé par T+1, etc.
T+i est donc la ième adresse mémoire à côté de T, c'est à dire le pointeur de la case T[i], qui est donc équivalent à &T[i].
1
alin
 
Je vous remercie infiniment, vous m'avez bien aidé!
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
KX a tout dit.
Je ferai donc juste part d'une erreur :
for (i=0; i<=N; i++)
Attention, le tableau T a N char et le tableau commence à l'indice 0. Le dernier indice est donc N-1.
Il faut donc mettre : for(i=0; i<N; i++)

Cdlt,
0