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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Funcion que devuelva un array
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Funcion que devuelva un array  (Leído 2,720 veces)
statham

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Funcion que devuelva un array
« en: 31 Enero 2019, 19:25 pm »

Buenas, es posible que llamando a una función desde el main(por ejemplo u otra) te devuelva un array??

Se que es posible, ya que tu al llamar a la funcion le pasas el array y te rellena los datos.

La cosa viene cuando el tamaño de dicho array no lo sabes hasta que llamas a esa función , entonces como puedes pasarle un array sin saber su tamaño? tampoco podrías igualar dicho array al array que te devuelve la función por que no sabes el tamaño.


Como podria crear un array vacio o un array de tamaño dinamico?


Un saludo.


« Última modificación: 1 Febrero 2019, 11:17 am por statham » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Funcion que devuelva un array
« Respuesta #1 en: 31 Enero 2019, 21:34 pm »

Debes crear un array de forma dinámica dentro de la función y devolver su puntero. Una vez que dejes de usar debes liberarlo.

*** Muy importante que sea un array dinámico porque se crea en el heap, no en la pila. Si devuelves un puntero a un objeto creado de forma local, en la pila, en un función que va a desaparecer, va a regresar, te encontrarás con problemas de memoria.


En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.156



Ver Perfil
Re: Funcion que devuelva un array
« Respuesta #2 en: 1 Febrero 2019, 03:17 am »

Saludos,

- Yo suelo solicitar al usuario el tamaño del array y crearlo en vivo:

Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  int cantidad;
  5.  printf("Indique la cantidad de elementos del Array: ");
  6.  scanf("%d", &cantidad);
  7.  int array[cantidad];
  8.  for (int i = 0; i < cantidad; i++) {
  9.    array[i] = i;
  10.  }
  11.  for (int i = 0; i < cantidad; i++) {
  12.    printf("%d\n", array[i]);
  13.  }
  14.  return 0;
  15. }

- Sin embargo he estado leyendo varios libros de programación en C y veo que casi ninguno habla de lo que hago. Es bastante sencillo utilizar el método que expongo, pero por lo que he leído, esto no es Estándar y muchos compiladores darán error.

-- Yo uso MinGW (gcc, g++, 6.3.0) y nunca me ha dado problemas al respecto así que ni enterado.

- La mayoría de los libros solo hablan de Arrays estáticos (int array[5], #define SIZE 5; int array[SIZE], int array[] = {1, 2, 3, 4, 5}), luego pasan directamente a Arrays dinámicos con punteros y malloc, free y NULL.

- Recomiendo este libro gratuito en español que justo trato el tema: Vectores Estáticos (pág. 63), Memoria Dinámica (pág. 213):
https://openlibra.com/es/book/introduccion-a-la-programacion-con-c-3

-- Y este par más que son bastante prácticos con varios ejemplos con malloc y free:
https://openlibra.com/es/book/fundamentos-de-programacion-en-c
https://openlibra.com/es/book/apuntes-de-la-materia-de-programacion-basica
En línea

statham

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: Funcion que devuelva un array
« Respuesta #3 en: 1 Febrero 2019, 11:20 am »

Saludos,

- Yo suelo solicitar al usuario el tamaño del array y crearlo en vivo:

Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  int cantidad;
  5.  printf("Indique la cantidad de elementos del Array: ");
  6.  scanf("%d", &cantidad);
  7.  int array[cantidad];
  8.  for (int i = 0; i < cantidad; i++) {
  9.    array[i] = i;
  10.  }
  11.  for (int i = 0; i < cantidad; i++) {
  12.    printf("%d\n", array[i]);
  13.  }
  14.  return 0;
  15. }

- Sin embargo he estado leyendo varios libros de programación en C y veo que casi ninguno habla de lo que hago. Es bastante sencillo utilizar el método que expongo, pero por lo que he leído, esto no es Estándar y muchos compiladores darán error.

-- Yo uso MinGW (gcc, g++, 6.3.0) y nunca me ha dado problemas al respecto así que ni enterado.

- La mayoría de los libros solo hablan de Arrays estáticos (int array[5], #define SIZE 5; int array[SIZE], int array[] = {1, 2, 3, 4, 5}), luego pasan directamente a Arrays dinámicos con punteros y malloc, free y NULL.

- Recomiendo este libro gratuito en español que justo trato el tema: Vectores Estáticos (pág. 63), Memoria Dinámica (pág. 213):
https://openlibra.com/es/book/introduccion-a-la-programacion-con-c-3

-- Y este par más que son bastante prácticos con varios ejemplos con malloc y free:
https://openlibra.com/es/book/fundamentos-de-programacion-en-c
https://openlibra.com/es/book/apuntes-de-la-materia-de-programacion-basica

Buenas gracias por responder, en mi caso no podria meterlo por teclado o pedirselo al usuario, ya que el tamaño viene indicado en un fichero por tanto hay que leerlo.

voy a intentar hacerlo con un array dinamico con puntero, o como solucion al sucia pero valida  leere el tamaño del array en el main, creo el array y luego llamare a la funcion pasandole el descriptor del fichero junto con el array.

un saludo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
funcion que devuelva 4 parametros
Programación C/C++
mapers 3 4,691 Último mensaje 4 Diciembre 2010, 04:51 am
por mapers
Función que devuelva un array (javascript)
Desarrollo Web
Fox_Neo 5 18,439 Último mensaje 13 Diciembre 2010, 15:31 pm
por Fox_Neo
Funcion que me devuelva un valor PL SQL
Bases de Datos
Algotrix 1 4,684 Último mensaje 6 Noviembre 2011, 22:50 pm
por Don Pollo
Una funcion que devuelva un entero + un string en c++
Programación C/C++
MellaSystems 4 3,371 Último mensaje 12 Septiembre 2014, 21:15 pm
por MellaSystems
Funcion que devuelva un array
Programación C/C++
davidrodribarri 2 2,100 Último mensaje 19 Febrero 2017, 09:49 am
por davidrodribarri
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines