C++ tableau 2D en arg d'une fonction
juni
Messages postés
78
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour
Je cherche à passer un tableau à deux dimensions en argument à une fonction.
J'ai essayé de le faire par pointeur de la même manière que pour un tableau à une dimension.
//PROGRAMME
#include <iostream.h>
#include <stdlib.h>
void test(int pTab)
{
pTab[1][1]=0;
}
int main ()
{
int tab[3][4]; // je n'ai besoin que de tableaux à dimensions égales
int * p;
p = &tab[0][0];
fonction(p);
cout << tab[1][1];
}
A la compilation, j'ai une erreur "invalid types 'int[int]' for array subscript" pour la ligne 7 (pTab[1][1]=0; dans test)
Si je mets une fonction vide { } pour test, je n'ai pas cette erreur. Donc le compilateur comprend le pointeur vers le tableau 2D, mais l'accesseur que j'utilise pour atteindre le contenu du tableau n'est pas reconnu.
Comment faire pour pouvoir manipuler le contenu de mon tableau ?
Merci
On n'est pas le meilleur quand on le croit mais quand on le
sait.
Je cherche à passer un tableau à deux dimensions en argument à une fonction.
J'ai essayé de le faire par pointeur de la même manière que pour un tableau à une dimension.
//PROGRAMME
#include <iostream.h>
#include <stdlib.h>
void test(int pTab)
{
pTab[1][1]=0;
}
int main ()
{
int tab[3][4]; // je n'ai besoin que de tableaux à dimensions égales
int * p;
p = &tab[0][0];
fonction(p);
cout << tab[1][1];
}
A la compilation, j'ai une erreur "invalid types 'int[int]' for array subscript" pour la ligne 7 (pTab[1][1]=0; dans test)
Si je mets une fonction vide { } pour test, je n'ai pas cette erreur. Donc le compilateur comprend le pointeur vers le tableau 2D, mais l'accesseur que j'utilise pour atteindre le contenu du tableau n'est pas reconnu.
Comment faire pour pouvoir manipuler le contenu de mon tableau ?
Merci
On n'est pas le meilleur quand on le croit mais quand on le
sait.
A voir également:
- Afficher un tableau c++
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
5 réponses
Salut, pour passer un tableau à deux dimension comme paramètre, il faut spécifier la taille de la seconde dimension:
Voilà
void affiche(float tab[][2]){ ... cout<<tab[0][0]; ... } int main(){ float totalAnnee[20][2]; ... affiche(totalAnnee); }
Voilà
Utilisateur anonyme
Je confirme, il est obligatoire de spécifier la taille
Welgriv
et comment on fait si on ne connais pas la taille avant d'exécuter le programme ?
petite précision : j'ai testé la même chose avec un tableau dynamique au lieu du tableau statique, ça ne marche pas plus...
On n'est pas le meilleur quand on le croit mais quand on le
sait.
On n'est pas le meilleur quand on le croit mais quand on le
sait.
salut, )pour passer un tableau a 2 dimensions, t'as 2 choix, soit par valeur, soit par pointeur (ce qui est meilleur, puisq tu évites une recopie et d'ailleurs c'est ce qui est utilisé lorsq l'on veut modifier le tableau), donc voila:
tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
cas 1 void test (int **tab, int len_in, int len_out) { for (int i = 0; i < len_out; i++) for (int j = 0; j < len_in; j++) cout<<tab[i][j]; } int main () { int **tab; //initialisation test (tab); } cas 2 void test (int tab[][], int len_in, int len_out) { for (int i = 0; i < len_out; i++) for (int j = 0; j < len_in; j++) cout<<tab[i][j]; } int main () { int tab[][]; //initialisation test (tab); }
tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
Désoler c'est en C mais c'est fonctionnel voici le code exact ce que vous désirez c passer au travers un tableau et l'afficher c'est bien ca
la fonction
void getTable(int* leTableau,int n,int m)
{
// tableau n*m
int j;
for(j=0;j<n*m;j++)
{
printf("%d"" ",leTableau[j]);
}
}
// le code main
int test[3][3] ={{11,2,3},{5,4,7},{8,5,6}}; // le tableau en question
getTable(test[0],3,3);
la fonction
void getTable(int* leTableau,int n,int m)
{
// tableau n*m
int j;
for(j=0;j<n*m;j++)
{
printf("%d"" ",leTableau[j]);
}
}
// le code main
int test[3][3] ={{11,2,3},{5,4,7},{8,5,6}}; // le tableau en question
getTable(test[0],3,3);
Quelqu'un peut-il prendre le temps de me répondre ???
On n'est pas le meilleur quand on le croit mais quand on le
sait.
On n'est pas le meilleur quand on le croit mais quand on le
sait.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question