A quoi sert le & devant un tableau?
Résolu
alin
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 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
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
3 réponses
-
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]. -
-
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,