déclaration dynamique tableau 2 dimensions
Bonjour,
Je déclare le tableau suivant :
Code:
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:
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:
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