Se connecter avec
S'enregistrer | Connectez-vous

[C/C++]Est-ce qu'un pointeur peut pointer sur un tableau?

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte
Expert Programmation

Citation :

Jato1845 a écrit :
Bonjour, j'essaye d'apprendre ce language (et j'ai du mal), je me demandais si on pouvait faire pointer un pointeur sur un tableau, j'ai essayé mais ça ne va pas, c'est possible ou pas?

C'est possible:

  1. int table[256];
  2. int * pPointer = table;

CRricky, si je fais ça, le pointeur pointera sur la première case du tableau ou sur tout le tableau?
Est-ce que je peux parcourir le tableau avec le pointeur?

quand je veux parcourir le tableau, je fais comme ça :
  1. while(i<256)
  2. {
  3. i=0;
  4. printf("%ld", table[i]);
  5. i++;
  6. }


mais pour parcourir le tableau avec le pointeur, comment dois-je faire?
Expert Programmation

Citation :
CRricky, si je fais ça, le pointeur pointera sur la première case du tableau ou sur tout le tableau?

Sur la première case.

  1. while(i<256)
  2. {
  3. i=0;
  4. printf("%ld", table[i]);
  5. i++;
  6. }

Ton code ne fonctionnera pas correctement, a chaque passage de la boucle tu remet i à 0.
il faudrait plutot faire:

  1. i=0;
  2. while(i<256)
  3. {
  4. printf("%ld", table[i]);
  5. i++;
  6. }


Pour parcourir ton tableau, je pense que tu peux le faire de la même facon qu'un tableau normal.
Si ca ne marche pas, tu peux toujours faire:
*((tab)+(sizeof(type de ton tableau)*indice)); avec tab étant le pointeur vers le début de ton tableau.

Un pointeur sur un tableau est en fait un pointeur qui pointe sur le premier élément du tableau. Ainsi, en déclarant int tab[10] un tableau de 10 entiers, on a les équivalences suivantes :
  1. tab <=> &tab[0]
  2. tab[0] <=> *tab
  3. tab[i] <=> *(tab + i)


Ainsi, pour parcourir tout ton tableau, le code suivant devrait convenir :

  1. for( unsigned char i = 0 ; i < 256 ; i++ )
  2. {
  3. cout << *(tab + i);
  4. }


Première fois que je donne une telle explication sur les pointeurs... Espérons que ce soit juste ! :-)
Lassé par la pub ? Créez un compte
Tom's guide dans le monde