Le agradecería si alguien podría explicarme el siguiente comportamiento:¿Cómo las matrices 2D en C se convierten en matrices 1D?
decir te declarar una matriz 2D estática
float buffer[NX][NY];
Ahora, si quiero llenar esta matriz, no tengo noticia de que podría ser hace de esta manera:
initarray(buffer, NX, NY);
#define INITDATAVAL 0.5
void initarray(void *ptr, int nx, int ny)
{
int i, j;
float *data = (float *) ptr;
for (i=0; i < nx*ny; i++)
{
data[i] = INITDATAVAL;
}
}
Mi pregunta es, si tampón es una matriz 2D, ¿cómo puede ser utilizado como una matriz 1D, una vez que se pasa a la función initarray
? Estoy luchando por comprenderlo ...
Cuando las matrices 2D están asignadas estáticamente, la memoria asignada es contigua, pero ¿podría utilizarse de esta manera si se asigna dinámicamente buffer
?
+1 Para retener información con plantillas. Ni siquiera sabía sobre eso. – evotopid