Post by DOLOREStengo un problema con el tema de como pasar una matriz por
referencia,alguien puede ayudarme?
Hola Dolores.
En c, los argumentos son pasados a las funciones por valor siempre,
pero en el caso de los arrays y los string literal el compilador evalúa
el nombre del array a la dirección del primer elemento salvo cuando
aparece en el operador sizeof (ésto no siempre es cierto en c++). Además
el compilador necesita saber todas las dimensiones del array excepto la
primera para efectuar las indirecciones. Es decir, si tu array sólo tiene
una dimensión puedes pasarlo perfectamente, pero si tiene más de una
necesitarás pasar todas las dimensiones menos la primera. Aquí tienes un
ejemplo:
//func1 acepta un array de enteros
void func1(int *a)
{
a[3] = 3; //ok
}
//func2 acepta un array de arrays de arrays de enteros
void func2(int ***a, size_t i, size_t j){
//accedemos al elemnto 2, 3, 4 : a[2][3][4]
*(*(*(a + 2*i*j) + 3*j) + 4) = 3;
}
int main()
{
int ar1[5];
func1(ar1);
int ar2[5][6][7];
func2((int ***)ar2, 6, 7);//aquí ar2 se evalúa a int (*)[][]
}
Espero que te sirva.