A quoi sert le & devant un tableau?
Résolu
alin
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- A quoi sert le & devant un tableau?
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- A quoi sert un tableau croisé dynamique - Guide
- Imprimer un tableau excel - Guide
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 :
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].
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].