|
|
|
|
C++ tableau 2D en arg d'une fonction
Dernière réponse le 28 mai 2009 à 13:31:35 juni, le 18 mai 2004 à 15:18:22Bonjour
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.
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:
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!!! |

