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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  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,853 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.176



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,728 Último mensaje 4 Diciembre 2010, 04:51 am
por mapers
Función que devuelva un array (javascript)
Desarrollo Web
Fox_Neo 5 18,504 Ú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,692 Ú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,484 Último mensaje 12 Septiembre 2014, 21:15 pm
por MellaSystems
Funcion que devuelva un array
Programación C/C++
davidrodribarri 2 2,141 Último mensaje 19 Febrero 2017, 09:49 am
por davidrodribarri
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines