Tableau à deux dimensions
	
	
		Bonjour
J'aurais une autre question à propos des tableaux à deux dimensions.
j'ai crée un tableau comme précédemment :
	Code:
	
| 12
 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; | 
 J'ai deux fonctions auxquelles je veux passer ce tableau pour l'afficher :
La 1ere qui marche sans problème :
	Code:
	
| 12
 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");
} | 
 Que j'appelle par fct_3(tableau_p,2,3)
Jusqu'ici tout marche mais j'ai ensuite voulu passer ce tableau d'une manière différente :
	Code:
	
| 12
 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");
}
} | 
 Cette fois-ci j'utilise ceci :
	Code:
	
| 12
 3
 
 |  
int (*p)[3] = *tableau_p; //Vu dans la FAQ
fct(2,3, p); | 
 mais j'obtiens le code le Warning pour la ligne int (*p)[3] = *tableau_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.