Discussion:
general
(demasiado antiguo para responder)
DOLORES
2004-02-20 10:14:03 UTC
Permalink
tengo un problema con el tema de como pasar una matriz por
referencia,alguien puede ayudarme?
juan
2004-02-20 10:32:51 UTC
Permalink
si no me equivoco cuando pasas un array, matriz, a una funcion o
procedimiento ya se pasa por referencia, es decir, no lo puedes pasar
por valor.

On Fri, 20 Feb 2004 11:14:03 +0100, "DOLORES"
Post by DOLORES
tengo un problema con el tema de como pasar una matriz por
referencia,alguien puede ayudarme?
juan
2004-02-20 10:33:11 UTC
Permalink
pon el codigo donde te da los errores a ver que puede ser.

On Fri, 20 Feb 2004 11:14:03 +0100, "DOLORES"
Post by DOLORES
tengo un problema con el tema de como pasar una matriz por
referencia,alguien puede ayudarme?
Leto Atreides
2004-02-20 10:36:28 UTC
Permalink
Hola Dolores:

En tus mensajes pones poca información, cuenta tu problema más
concretamente y te podremos ayudar, incluso pega la parte del código
conflictiva.

Un saludo,
Leto Atreides
Post by DOLORES
tengo un problema con el tema de como pasar una matriz por
referencia,alguien puede ayudarme?
Yarblek de Logh
2004-02-20 10:50:38 UTC
Permalink
Post by DOLORES
tengo un problema con el tema de como pasar una matriz por
referencia,alguien puede ayudarme?
Intenta pasar por referencia elemento a elemento. Es una técnica que
funciona bastante bien.

Yarblek de Logh
Manzanita
2004-02-20 20:26:31 UTC
Permalink
Post by DOLORES
tengo 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.

Loading...