Planeo crear una matriz 2D de un puntero derivado de typedef struct
Digamos que la typedef struct
se denomina “Elementos” y contiene variables mixtas de cadenas y enteros.
Declararé dos variables int
: typenum
y typetotal
. Estos dos enteros comenzarán desde cero y se sumn cuando los datos de entrada coincidan con cierta función.
En la matriz, Items *type[][]
, básicamente type[][]
es Items *type[typenum][typetotal]
pero no puedo hacer esto ya que declararé typenum
y typetotal
como cero en la parte de la statement.
Intenté inicializar la matriz a través de Items *type[][] = {{0},{0}}
pero esto genera un error.
¿Algún consejo? Algunos me dijeron que usara malloc () en esto, pero simplemente no sé cómo.
* Usando Tiny C en Windows
Utilice la asignación de memoria dinámica.
Items **type; type = malloc(sizeof (Items *) * typenum); for (int i = 0; i < typenum; i++) type[i] = malloc(sizeof Items) * typetotal);
Debe liberar manualmente la memoria asignada después de usar la matriz.
for (int i = 0; i < typenum; i++) free(types[i]); free(types);
Aquí hay un tutorial sobre él: http://www.eskimo.com/~scs/cclass/int/sx9b.html
Si el número de typenum
y el typetotal
aumentan a medida que se ejecuta su progtwig, asegúrese de utilizar realloc
, que reasignará más memoria y conservará el contenido. Tendrá que asignar la primera dimensión de la matriz de esta manera:
myArray = realloc(myArray, sizeof(Items*) * typenum);
y luego asigne la segunda dimensión para cada uno de los primeros:
for(...) myArray[i] = realloc(myArray[i], sizeof(Items) * typetotal);