Quiero asignar una matriz multidimensional asignada estáticamente a una variable temporal. Consideremos el siguiente ejemplo:¿Cómo asignar una matriz multidimensional a una variable temporal?
void foo(int b[3][2])
{
b[1][1] = 1; // no segmentation fault
}
int main()
{
int a[3][2] = {{1, 2}, {11, 12}, {21, 22}};
foo(a);
int** c;
c = (int**)&a;
c[1][1] = 1; // segmentation fault on execution
int* d[3];
d[0] = (int*)&(a[0]);
d[1] = (int*)&(a[1]);
d[2] = (int*)&(a[2]);
d[1][1] = 1; // no segmentation fault
return 0;
}
Básicamente quiero hacer lo que el compilador hace con el parámetro de b
foo()
. Pero la única solución de trabajo que pude encontrar es d
. ¿No hay una forma menos complicada?
Es extraño cuántas personas piensan que una matriz 2D de alguna manera arroja directamente a un puntero a punteros. – tenfour