Pointeurs

Signaler
Messages postés
33
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
26 mars 2004
-
Messages postés
33
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
26 mars 2004
-
bonjour,
j aimerai savoir cmt on fait un scanf sur une suite de pointeur, je m explike, je dois faire ca ms sans utiliser les [] , cad les tableux, ms un pointeur *p
for (i=0; i<10; i++)
scanf("%d", &arr2[i]);

et
for ( i=0; i<10; i++)
{if (arr1[i] != 0)
counter++;
}
tjrs sans utiliser de tableur ms le meme pointeur *x...
ca fai 1h je tente tt... arf

merci dvotre aide ;)

5 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
il sufit de savoir que :

tab[i] est équivalent à *(tab+i)
&tab[i] est équivalent à (tab+i)

donc sont tu garde i comme compteur et tu fait les modif ou tu utiliser un pointeur comme compteur :

dans ta boucle (avec tableau d'int):
for(int* p = tab; p < tab+10; p++)
scanf("%d", p);
Messages postés
33
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
26 mars 2004

desole ms je comprend pas...
cmt j initialize mon pointeur ki remplace le tableau??
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
quand tu déclare un tableau du genre :
int tab[10];

tab est un pointeur sur le premier élément du tableau.

pour parcourir, le tableau avec un compteur, en général on fait :
for(int i = 0; i < 10; i++)
tab[i] = 0;

comme tab est un pointeur sur le premier élément du tableau, l'adresse du second est tab+1, le second tab+2..
et leuts valeusr *(tab+1), *(tab+2)...

=>la notation tab[i] est identique à faire *(tab+i)
for(int i = 0; i < 10; i++)
*(tab+i) = 0;

au lien d'incrémenter le compteur i, on peut directement incrémenter un pointeur sur les éléments du tableau :
int *p = tab;
p va pointer sur le premier élément du tableau.

la boucle devient
for(int*p = tab, p < tab+10; p++)
*p = 0;

initialisation : int *p = tab;
test fin : p < tab + 10 (adresse fin du tableau)
passage élément suivant : p++.
Messages postés
33
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
26 mars 2004

merci, en fait je dois ossi creer une tableu tab[i] qd je cree mes variable c ca??
Messages postés
33
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
26 mars 2004

impecable!!
merci beaucoup de ton aide!!!