Bonjour
J'aurais une autre question à propos des tableaux à deux dimensions.
j'ai crée un tableau comme précédemment :J'ai deux fonctions auxquelles je veux passer ce tableau pour l'afficher :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 int** tableau_p = malloc(sizeof(int*) * 2 ); int i; for(i=0;i<2;i++) tableau_p[i] = malloc(sizeof(int) * 3); tableau_p[0][0] = 200; tableau_p[0][1] = 150; tableau_p[0][2] = 100; tableau_p[1][0] = 50; tableau_p[1][1] = 45; tableau_p[1][2] = 40;
La 1ere qui marche sans problème :
Que j'appelle par fct_3(tableau_p,2,3)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void fct_3(int **tab,int l, int c){ int i,j; for(i=0;i<l;i++){ for(j=0;j<c;j++) printf("%d ",tab[i][j]); } printf("\n"); }
Jusqu'ici tout marche mais j'ai ensuite voulu passer ce tableau d'une manière différente :
Cette fois-ci j'utilise ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 void fct(int l,int c,int (*tab)[c]){ int i,j; for(i=0;i<l;i++){ for(j=0;j<c;j++) printf("%d ",tab[i][j]); } printf("\n"); } }
mais j'obtiens le code le Warning pour la ligne int (*p)[3] = *tableau_p; :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int (*p)[3] = *tableau_p; //Vu dans la FAQ fct(2,3, p);
warning: initialization from incompatible pointer type.
A l'exécution j'obtiens cependant :
200 150 100 17 50 45
au lieu de
200 150 100 50 45 40.
Pouvez-vous me dire d'où viennent les erreurs (le Warning et le mauvais affichage) ?
La 1ere manière de passer un tel tableau est-elle la seule solution valable?
Cordialement.
Partager