Título: [C] Devolver array bidimensional mediante una función Publicado por: crawler! en 23 Junio 2013, 23:02 pm ¿es posible? Y si lo es, ¿cómo se hace? Soy bastante novato y me vendria bien una ayudita ;D Saludos!
Título: Re: [C] Devolver array bidimensional mediante una función Publicado por: amchacon en 23 Junio 2013, 23:39 pm No es posible devolver un array bidimensional (bueno en realidad hay un truquillo para hacerlo usando memoria dinámica pero no vale la pena).
Lo que se suele hacer es pasar el array a la funcion: Código
La matriz conservará los cambios al finalizar la función ;) Título: Re: [C] Devolver array bidimensional mediante una función Publicado por: crawler! en 24 Junio 2013, 00:09 am Gracias por responder amchacon!
Quieres decir que cuando le pasas un array como parámetro se pasa automáticamente por referencia ¿no? ¿Así de simple? ¿no es necesario usar punteros ni nada? Yo habia pensado en utilizar Código: void Matriz(int *[10]); ¿Existe alguna diferencia entre usar este código y usar el que me has dicho? A ver si me puedes aclarar esto por que el tema de los punteros no me acaba de quedar claro. Saludos. Título: Re: [C] Devolver array bidimensional mediante una función Publicado por: ThePinkPanther en 24 Junio 2013, 02:13 am Código: #include <iostream> Así anda. :P y de la otra forma tambien, no se si existe una diferencia . aunque no es necesario usar punteros,directamente se pasa por referencia , podes usar el modificador const para que no se modifique el array, si es que vas a realizar solo operaciones de lectura Título: Re: [C] Devolver array bidimensional mediante una función Publicado por: crawler! en 24 Junio 2013, 02:43 am Ese code no es de C++? De todos modos he utilizado el método que me ha dicho emchacon y funciona tal como deseaba :) Sólo queria saber si en este caso, cuando se trata de arrays, hay alguna diferencia entre utilitzar punteros o no, ya que diria que sólo es útil cuando trabajas con tipos de datos que se envian por valor, p.e. ints, chars, etc. Pero el problema está solucionado ;)
Título: Re: [C] Devolver array bidimensional mediante una función Publicado por: ecfisa en 24 Junio 2013, 03:03 am Hola crawler!.
Citar ¿Existe alguna diferencia entre usar este código y usar el que me has dicho? Ambas formas son equivalentes: Código
Otra forma de pasar el arreglo bidimensional por referencia (accediendo como C/C++ lo almacenan en memoria) es: Código
Saludos :) Título: Re: [C] Devolver array bidimensional mediante una función Publicado por: ThePinkPanther en 24 Junio 2013, 03:41 am Otra forma de pasar el arreglo bidimensional por referencia (accediendo como C/C++ lo almacenan en memoria) es: Código
esto es unidimensional. Título: Re: [C] Devolver array bidimensional mediante una función Publicado por: ecfisa en 24 Junio 2013, 04:21 am Citar esto es unidimensional. Hola ThePinkPanther. La forma de acceso dentro de la función es lineal, pero el argumento enviado es un arreglo bidimensional y a eso me refiero en el mensaje anterior: Citar Otra forma de pasar el arreglo bidimensional por referencia ... Como ejemplo, este código incrementa en uno cada elemento de un arreglo declarado como bidimensional y de ese modo es enviado a la función como argumento: Código
Es decir, el modo de acceso que se utilice dentro de la función no altera el caracter bidimensional de la declaración del arreglo. Saludos. :) Título: Re: [C] Devolver array bidimensional mediante una función Publicado por: crawler! en 24 Junio 2013, 05:06 am Muchas gracias ecfisa!! A mi también me había quedado la duda de si en el tercer ejemplo mat se declaraba como un array unidimensional, pues yo creía que siempre era necesario indicar la longitud de los arrays (a partir del 1ero). Además al compilar recibes el siguiente warning "passing arg 1 of 'Function' from incompatible pointer type" pero supongo que mientras funcione bien... :D
Título: Re: [C] Devolver array bidimensional mediante una función Publicado por: ecfisa en 24 Junio 2013, 05:33 am Hola crawler!.
Si estas compilando el ejemplo bajo C++, tendrías que agregar: Código Reemplazar por los header files correspondientes y los printf por cout (si no se me escapa algo mas...). Saludos. :) Título: Re: [C] Devolver array bidimensional mediante una función Publicado por: ThePinkPanther en 24 Junio 2013, 06:29 am Es decir, el modo de acceso que se utilice dentro de la función no altera el caracter bidimensional de la declaración del arreglo. uhh habia mal entendido jaja. un saludo !!! Título: Re: [C] Devolver array bidimensional mediante una función Publicado por: amchacon en 24 Junio 2013, 11:59 am Gracias por responder amchacon! El truco es que los arrays se almacenan "con un puntero a su primer elemento" por lo tanto no es necesario pasarlo por referencia, es implícito al estar usando punteros.Quieres decir que cuando le pasas un array como parámetro se pasa automáticamente por referencia ¿no? ¿Así de simple? ¿no es necesario usar punteros ni nada? Título: Re: [C] Devolver array bidimensional mediante una función Publicado por: crawler! en 24 Junio 2013, 22:00 pm Gracias a todos x vuestras respuestas me habeis sido de gran ayuda!! ;-)
Salu2. |