Votre question

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

Tags :
  • Programmation
Dernière réponse : dans Programmation
23 Juin 2006 16:34:01

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?

Autres pages sur : pointeur pointer tableau

23 Juin 2006 17:49:58

bjr,
En fait, un tableau est un pointeur.
il faut juste utiliser le nom du tableau pour pointer sur la première case du tableu.


.....OK .....
23 Juin 2006 18:00:04

salut,
en c++ pour déclarer un pointeur sur un tableau d'entiers tu fais :
int *t = new int[taille de ton tableau].

en C tu fais :
int *t= malloc(10*sizeof(int));
pou rdéclarer un tableau de 10 cases.

voila.
Contenus similaires
23 Juin 2006 19:14:18

Et on oublie pas de faire un petit :

  1. delete[] t;


Un new implique un delete ! :-)
23 Juin 2006 20:29:59

ou un free avec un malloc :-D
23 Juin 2006 20:56:36

:-o tout ce que vous me dites là (new, malloc,...) je n'y comprends rien, je ne l'ai pas encore vu. Je vais m'abstenir de pointer sur des tableaux.
a b L Programmation
23 Juin 2006 22:00:24

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;

23 Juin 2006 22:02:09

OHHHH!!!!! Les topics uniques ne sont pas fait pour les chiens!
va si tu veux parler du C!
Ici :-D
23 Juin 2006 22:22:51

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?
23 Juin 2006 22:35:29

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.
23 Juin 2006 22:40:35

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 ! :-)
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS