Allouer un tableau à deux dimensions

Comment atsortingbuer un tableau bidimensionnel à l’aide de malloc ? Ceci est mon code actuel:

 typedef struct object product, *pprod; struct object{ int type; int quantity; pprod next; }; pprod t[4][3]; 

Merci beaucoup pour votre aide.

Pour allouer de la mémoire de telle sorte que la disposition soit compatible avec un tableau à deux dimensions normal, ou un tableau de tableaux, vous avez besoin d’un pointeur sur un tableau de taille appropriée.

 pprod (*t)[m] = malloc(n * sizeof *t); 

Donc t est un pointeur sur les tableaux de m éléments de type pprod , et vous pouvez simplement les utiliser

 t[i][j] 

comme s’il était déclaré

 pprod t[n][m]; 

(si malloc ne retourne pas NULL ).

Cette allocation alloue un bloc de mémoire contigu, contrairement à l’allocation d’un pprod ** .

(Remarque: Si m n’est pas une constante de compilation, cela nécessite que le compilateur prenne en charge les tableaux de longueur variable, cela ne fonctionnerait pas avec MSVC.)

Pour un tableau 2D, vous devez définir un pointeur tel que:

 typedef struct obj OBJECT; OBJECT **2Dptr = malloc (sizeof(OBJECT*)*rows) for(i=0;i 

Il y a aussi d'autres moyens, vous pouvez définir un tableau de pointeurs sur votre object struct.

 if you want object[5][10] you can create 5 pointers to array of 10 objects; 

si vous voulez que la mémoire soit contiguë, vous pouvez le faire

 *2Dptr=malloc(sizeof(OBJECT) * rows * cols); //allocate contiguosly **access_ptr = malloc(sizeof(OBJECT*) * rows); for(i=0;i