[C] fonction afficher matrice ...

Fermé
dodo - 17 oct. 2009 à 11:28
 dodo - 18 oct. 2009 à 20:59
Bonjour, je cherche donc à afficher une matrice avec une fonction.
j'y arrive sans fonction, ça vient de l'appel je pense.
je fais

void afficher(int nbLignes, int nbColonnes, int **M);

int main()
{
int M[3][2]={{1,2},{3,4},{5,6}};

afficher(3,2,M);


et il me renvoit " erreur: cannot convert ‘int (*)[4]’ to ‘int**’ for argument ‘3’ to ‘void affiche_tab(int, int, int**) "
j'ai essayé un tas d'autre trucs, mais je ne vois pas.

Merci de votre aide .

6 réponses

Pour passer un tableau multidimensionnel à une fonction, il faut savoir qu'on ne peut omettre qu'une seule dimension; la raison est évidente: il faut bien que la fonction puisse retrouver où se trouve un élément et pour cela, elle doit connaître au moins (n-1) dimensions.
Dans notre cas, tu ne peux déclarer la fonction que comme:
- void afficher(int nbLignes, int nbColonnes, int M[][2]);
ou
- void affiche(int nbLignes, int nbColonnes, int (*M)[2]);
L'appel, dans les 2 cas, sera comme tu l'as indiqué.
Si tu ne veux pas passer les dimensions du tableau de cette manière, il faut alors passer simplement un pointeur et ce sera à toi de calculer chaque élément.
Bonne continuation.
4