elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Trabajar con un array pasado de una función
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Trabajar con un array pasado de una función  (Leído 1,505 veces)
Zegaral

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Trabajar con un array pasado de una función
« 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>
#include <stdlib.h>

int tamano_vector () ;
int crear_vector ( int a )  ;
void mostrar_vector ( int a , int *n ) ;


int main () {

int tamano = tamano_vector () ;

int n[tamano] ;

*n = crear_vector (tamano) ;

mostrar_vector (tamano , n ) ;


return 0 ;


}
//
//
//
int tamano_vector ()  {

int dimension ;

printf("\nTamanio del Vector\n");
scanf("%d", &dimension);

return dimension ;

}
//
//
//
int crear_vector ( int a ) {

int *v ;

v = (int*)malloc(sizeof(int)*a) ;

for ( int i = 0 ; i < a ; i++ ) {

printf("\nElemento %i:\t", i+1);
scanf("%i", &v[i]);

}

return *v ;

}
//
//
//
void mostrar_vector ( int a ,  int *n ) {

printf("\nTu vector es:\n[") ;
for ( int i = 0 ; i < a ; i++ ) {

printf("\t%i", *n) ;

}

printf("]\n");

}
Un saludo a tod@s y muchas gracias!  ::) :D


« Última modificación: 9 Marzo 2019, 21:29 pm por Zegaral » En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Trabajar con un array pasado de una función
« Respuesta #1 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





En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pasar un array por una función
PHP
dimitrix 8 4,197 Último mensaje 19 Junio 2011, 22:47 pm
por cassiani
Pasara array de js a una funcion de php
Desarrollo Web
DaNuK 1 1,395 Último mensaje 9 Agosto 2013, 20:11 pm
por DaNuK
Trabajar con array variables
.NET (C#, VB.NET, ASP)
luis456 3 2,556 Último mensaje 21 Octubre 2014, 22:47 pm
por Eleкtro
[SOLUCIONADO] Array pasado por referencia a una función no se modifica
Programación C/C++
HastatusXXI 1 1,778 Último mensaje 1 Noviembre 2016, 13:21 pm
por araes
Funcion que devuelva un array
Programación C/C++
davidrodribarri 2 1,859 Último mensaje 19 Febrero 2017, 09:49 am
por davidrodribarri
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines