Rejoignez
la communauté
Inscrivez-vous
Posez votre question Signaler

C++ tableau 2D en arg d'une fonction

juni 79Messages postés samedi 3 janvier 2004Date d'inscription - Dernière réponse le 13 août 2012 à 09:37
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.
Lire la suite 
6 réponses
Réponse
+2
moins plus
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!!!
apophis - 28 mai 2009 à 13:31
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
Ajouter un commentaire
Réponse
+1
moins plus
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.
Ajouter un commentaire
Réponse
+1
moins plus
Salut, pour passer un tableau à deux dimension comme paramètre, il faut spécifier la taille de la seconde dimension:



void  affiche(float tab[][2]){
      ...
      cout<<tab[0][0];
      ...
}


int main(){

float totalAnnee[20][2];

...
affiche(totalAnnee);

}






Voilà
griviere42 443Messages postés samedi 25 avril 2009Date d'inscription 21 décembre 2012Dernière intervention - 13 août 2012 à 09:37
Je confirme, il est obligatoire de spécifier la taille
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Ce document intitulé « c++ tableau 2D en arg d'une fonction » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Recevez notre newsletter
CCM JDN Droit-Finances Femme Linternaute Copains d'avant Santé-Médecine

Carte de voeux 2013, Cinéma, Décoration, Expeert, Horoscope, Salon littéraire, Programme TV, Cuisine (Recette), Coiffure, Restaurant, Test débit, Voyage, Hayatouki