Dualidad puntero-array
Publicado por Googol (255 intervenciones) el 12/11/2003 14:21:32
Hola!
Hacía mucho que no escribía por aquí... :-)
A ver, tengo una duda un poco extraña.
Imaginaos que tengo un array estático de matrices bidimensionales:
float matrices[10][4][4];
Esto me declara 10 matrices de 4x4, todas seguidas en memoria, y yo puedo acceder mediante:
matrices[num_matriz][num_fila][num_columna] = 1;
Ahora resulta que quiero que ese array sea dinámico. Es decir no quiero que mi implementación tenga fijo el número de matrices (10 en el ejemplo), sino que quiero hacerlo con un puntero y pedir memoria. Pero quiero que esa memoria vaya toda seguida.
O sea quiero:
float [...]matrices[...];
Los [...] no sé cómo son (es lo que pregunto :-D). Quiero declarar un puntero a lo que será un array de matrices de 4x4.
Luego haría _un solo_ new:
matrices = new [...]float[...](10);
y accedería a las posiciones de la matriz igual que antes:
matrices[num_matriz][num_fila][num_columna] = 1;
Básicamente lo que quiero saber es si se puede (y cómo) hacer en sólo una declaración las dos siguientes:
typedef float tipoMatriz[4][4];
tipoMatriz* matrices;
y luego cómo sería el new que con las dos declaraciones es:
matrices = new tipoMatriz[10];
¡¡Gracias!!
Hacía mucho que no escribía por aquí... :-)
A ver, tengo una duda un poco extraña.
Imaginaos que tengo un array estático de matrices bidimensionales:
float matrices[10][4][4];
Esto me declara 10 matrices de 4x4, todas seguidas en memoria, y yo puedo acceder mediante:
matrices[num_matriz][num_fila][num_columna] = 1;
Ahora resulta que quiero que ese array sea dinámico. Es decir no quiero que mi implementación tenga fijo el número de matrices (10 en el ejemplo), sino que quiero hacerlo con un puntero y pedir memoria. Pero quiero que esa memoria vaya toda seguida.
O sea quiero:
float [...]matrices[...];
Los [...] no sé cómo son (es lo que pregunto :-D). Quiero declarar un puntero a lo que será un array de matrices de 4x4.
Luego haría _un solo_ new:
matrices = new [...]float[...](10);
y accedería a las posiciones de la matriz igual que antes:
matrices[num_matriz][num_fila][num_columna] = 1;
Básicamente lo que quiero saber es si se puede (y cómo) hacer en sólo una declaración las dos siguientes:
typedef float tipoMatriz[4][4];
tipoMatriz* matrices;
y luego cómo sería el new que con las dos declaraciones es:
matrices = new tipoMatriz[10];
¡¡Gracias!!
Valora esta pregunta


0