[C] fonction afficher matrice ...

dodo -  
 dodo -
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 .
Configuration: Linux
Firefox 3.0.14

6 réponses

  1. loupius
     
    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