Bonjour,

Je déclare le tableau suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
#define MY_DIM1 (10)
#define MY_DIM2 (20)
STRUCT_FOO myDoubleTable[DIM1][DIM2];
// myDoubleTable est de type : struct STRUCT_FOO *[MY_DIM2]

J'ai voulu déclarer mon tableau en allocation dynamique mais le compilateur me génère des erreurs : comment faut-il déclarer myDoubleTable2 pour qu'il est le même type que myDoubleTable ?
J'ai essayé ceci, mais j'ai les erreurs suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
STRUCT_FOO * myDoubleTable2[MY_DIM2]; // décalration
 
myDoubleTable2= calloc(MY_DIM1 * MY_DIM2, sizeof(STRUCT_FOO));
// error: incompatible types when assigning to type 'struct STRUCT_FOO *[20]' from type 'void *'
 
foo(myDoubleTable2); // prototype : void foo(STRUCT_FOO tab[][MY_DIM2]);
// warning: expected 'struct STRUCT_FOO (*)[20]' but argument is of type 'struct STRUCT_FOO **'

Remarque : sur le net, j'ai vu des exemples pour déclarer des tableaux à 2 dimensions, mais ce n'est pas la même chose que ce que je cherche à faire (la consommation mémoire est supérieure à mon exemple)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
// code issu de https://www.clubnix.fr/malloc_tableau_2_dimensions_C
int **createTable(int nbLin, int nbCol){
	int **tableau = (int **)malloc(sizeof(int*)*nbLin);
	int *tableau2 = (int *)malloc(sizeof(int)*nbCol*nbLin);
	for(int i = 0 ; i < nbLin ; i++){
		tableau[i] = &tableau2[i*nbCol];
	}
	return tableau;
}
 
void freeTable(int **tableau){
	free(tableau[0]);
	free(tableau);
}
Merci d'avance