Rechercher : dans
Par :

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:22 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « c++ tableau 2D en arg d'une fonction » dans :

1

juni, le 18 mai 2004 à 15:22:39

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.

Répondre à juni

2

juni, le 18 mai 2004 à 18:59:50

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.

Répondre à juni

3

tafiscobar, le 18 mai 2004 à 20:00:26
  • +1

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!!!

Répondre à tafiscobar

4

 apophis, le 28 mai 2009 à 13:31:35

Ca marche pas ton truc en plus tu met meme pas les bornes dans l'appel de ta fonction
la preuve que ta pas testé ton code

Répondre à apophis