[C++] Pointeur & Tableau ? help
Romiinet
Messages postés
596
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
pour passer un tableau a une fonction j'utilise souvent la suivante :
dans main :
int table[9];
fonction1(table);
prototype :
void fonction1(int *table);
ce qui est pratique puisque dans ma fonction je peu ensuite utilise "table" comme bon me semble, comme si elle été déclarer dans cette fonction,
par contre lorsque je veux passer a tableau a plusieurs dimension sa se corse un peu :/
j'ai essaye plusieurs façon mais rien a faire j'ai toujours une erreur de compilation :/
pourrais vous m'indiquer comment crée un prototype qui accepterai de passer un tableau a 2 ou 3 dimension s'il vous plait ?
et un exemple d'appelle de la fonction si se n'est pas trop demander.
merci =)
pour passer un tableau a une fonction j'utilise souvent la suivante :
dans main :
int table[9];
fonction1(table);
prototype :
void fonction1(int *table);
ce qui est pratique puisque dans ma fonction je peu ensuite utilise "table" comme bon me semble, comme si elle été déclarer dans cette fonction,
par contre lorsque je veux passer a tableau a plusieurs dimension sa se corse un peu :/
j'ai essaye plusieurs façon mais rien a faire j'ai toujours une erreur de compilation :/
pourrais vous m'indiquer comment crée un prototype qui accepterai de passer un tableau a 2 ou 3 dimension s'il vous plait ?
et un exemple d'appelle de la fonction si se n'est pas trop demander.
merci =)
A voir également:
- [C++] Pointeur & Tableau ? help
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
2 réponses
Le problème des tableaux à plus d'une dimension c'est qu'il n'y a pas d'équivalent en pointeur.
int** c'est équivalent à un tableau de (int *) c'est à dire un tableau de pointeur. Les mémoires ne sont pas continue et tu peux avoir des "tableaux" de taille variable.
int t[m][n] défini un vrai tableau à deux dimension de taille m*n. Il me semble que dans ce cas là les mémoires sont continue. il me semble que dans ce cas là un élément t[i][j] == t[i+j*m] (ou dans le genre) c'est à dire qu'à tout moment le programme doit connaitre au moins une dimension du tableaux (2 en 3D, 3 en 4D etc.).
Tout ça pour t'expliquer que tu ne peux pas passer par un pointeur, il faut donner un tableau en argument avec une taille :
void fonction(int t[m][]);
Il y a pas mal d'imprécision dans ce que je viens de te dire, mais il y a déjà pas mal de discutions sur ce forum traitant des tableaux en C, où tu trouvera pleins d'informations.
int** c'est équivalent à un tableau de (int *) c'est à dire un tableau de pointeur. Les mémoires ne sont pas continue et tu peux avoir des "tableaux" de taille variable.
int t[m][n] défini un vrai tableau à deux dimension de taille m*n. Il me semble que dans ce cas là les mémoires sont continue. il me semble que dans ce cas là un élément t[i][j] == t[i+j*m] (ou dans le genre) c'est à dire qu'à tout moment le programme doit connaitre au moins une dimension du tableaux (2 en 3D, 3 en 4D etc.).
Tout ça pour t'expliquer que tu ne peux pas passer par un pointeur, il faut donner un tableau en argument avec une taille :
void fonction(int t[m][]);
Il y a pas mal d'imprécision dans ce que je viens de te dire, mais il y a déjà pas mal de discutions sur ce forum traitant des tableaux en C, où tu trouvera pleins d'informations.