Título: Trabajar con un array pasado de una función Publicado por: Zegaral en 9 Marzo 2019, 17:29 pm Hola gente!
Estaba haciendo un ejercicio de vectores y quería separarlo en diferentes funciones. Una para pedir el tamaño del vector (memoria dinámica), otra para crear el propio vector con los valores introducidos, y otra para mostrar dicho vector. Mi problema es, que aún no controlo mucho el tema de los punteros y la memoria dinámica, entonces no se como pasar el vector creado en la función de crear_vector, para poder mostrarlo en mostrar_vector. Mi código es este: Código: #include <stdio.h> Título: Re: Trabajar con un array pasado de una función Publicado por: K-YreX en 9 Marzo 2019, 17:40 pm Coloca tu código entre etiquetas de código GeSHi (hay un desplegable encima del cuadro de texto cuando escribes/modificas un mensaje). Sin las etiquetas es difícil de interpretar el código ya que algunos corchetes [] se interpretan como etiquetas y el código parece incompleto... :rolleyes:
Lo primero decirte que en tu programa principal <main> has mezclado memoria estática y dinámica. Usa una o la otra, no las dos... Y la función <crear_vector()> no devuelve un valor correcto, mira a ver eso, tienes que devolver el puntero a la primera posición del vector, no el valor de esa posición. Cuando se pasa un array como parámetro lo que se pasa es un puntero que apunta a la primera dirección del array. Entonces en una función para mostrar, por ejemplo, un array, debes pasar el array (puntero al primer elemento) y su tamaño, para poder recorrerlo. Si quieres reservar memoria en un puntero de forma dinámica, pasando el puntero como función, este debe pasarse por referencia (puedes buscar cómo pasar parámetros por referencia en C, ya que se pasa todo por valor). Y si reservas memoria con <malloc> (en C) o <new> (en C++), luego debes liberar esa memoria manualmente con <free> o <delete> respectivamente. Suerte :-X |