Duplicar posible:
May I treat a 2D array as a contiguous 1D array?¿Es legal acceder a una matriz bidimensional como si fuera unidimensional?
Considere el siguiente código:
int array2d[10][10];
int *array1d = array2d[0];
Nunca oí hablar de una implementación en la que no funcionaría, pero es legal acceder y manipular array2d
a través de array1d
? ¿Qué sección del estándar permite esto? ¿Existe algo en el estándar que impida que las implementaciones inserten espacio extra o relleno entre cada una de las matrices de segundo nivel (no es necesario, pero sí lo es)?
Pregunta extra: ¿Hay alguna manera de acceder a array2d
como int[100]
que no requiere reinterpret_cast
o C-style?
Siempre puede envolverlo en una clase que lo almacene internamente como una matriz unidimensional. – chris
¿Firmado para el concurso ofuscado C++ :)? – ScarletAmaranth
¿No es 'int * array1d = array2d [0];' un poco más directo? – ildjarn