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)
Merci d'avance
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); }
Partager