Pointeurs

djkill55 Messages postés 33 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 26 mars 2004 - 11 janv. 2004 à 13:35
djkill55 Messages postés 33 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 26 mars 2004 - 11 janv. 2004 à 15:02
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

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
11 janv. 2004 à 13:57
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);
0
djkill55 Messages postés 33 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 26 mars 2004
11 janv. 2004 à 14:18
desole ms je comprend pas...
cmt j initialize mon pointeur ki remplace le tableau??
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
11 janv. 2004 à 14:28
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++.
0
djkill55 Messages postés 33 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 26 mars 2004
11 janv. 2004 à 14:37
merci, en fait je dois ossi creer une tableu tab[i] qd je cree mes variable c ca??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
djkill55 Messages postés 33 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 26 mars 2004
11 janv. 2004 à 15:02
impecable!!
merci beaucoup de ton aide!!!
0
Rejoignez-nous