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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


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

Desconectado Desconectado

Mensajes: 5


Ver Perfil
función con arreglo de punteros. C++
« en: 4 Febrero 2014, 17:03 pm »

Hola que tal, tengo duda de por que esto que a continuación les publico, me marca error al compilar para ser precisos en donde llamo a la función llenar. ¿ Lo que intento hacer, no es posible hacerlo? o ¿lo estoy haciendo mal? Cualquier comentario es bien recibido!!

//#cabeceras

void llenar(int* ptrnumeros[])
  {
      *ptrnumeros[0]=25;
      *ptrnumeros[1]=50;
  }

void main()
  {
     int numeros[2];

     llenar(&numeros);
     printf("%d, %d ",nueros[0],numeros[1]);

     getch();
   }


En línea

yookino

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: función con arreglo de punteros. C++
« Respuesta #1 en: 4 Febrero 2014, 17:14 pm »

Gracias por tu respuesta ahora mismo lo cambio de foro, en cuanto al problema el error no esta allí, pero buena observación!!


En línea

Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: función con arreglo de punteros. C++
« Respuesta #2 en: 4 Febrero 2014, 23:14 pm »

Hola yookino, te explico. Aparte del error en el printf, tu programa tiene un problema muy sutil, justo de esa clase que los hace difíciles de localicar. Una de las mayores potencias del lenguaje C es la capacidad de manejar punteros, pero esa ventaja se puede convertir a veces en dolor de cabeza.

La función llenar está codificada de manera de recibir un arreglo de punteros. Aquí debes tener en cuenta la "precedencia" de los operadores de C, pues el operador [] (acceso a elemento arreglo) tiene mayor precedencia que el operador * (indirección). O sea, que la sentencia:

Código:
*ptrnumeros[0]=25;

primero ejecuta el "[]", luego el "*". O sea, extrae el primer elemento del arreglo prtnumeros, que debe ser un puntero (o sea, la dirección de un dato en la memoria), y luego obtiene el dato apuntado por dicha dirección.

Ahora, bien, en la sentencia

Código:
llenar(&numeros);

no estás pasando un arreglo de punteros sino un arreglo por referencia (que es otra cosa). Si fueras a hacer eso, la función llenar debería esta codificada más bien como:

Código:
(*ptrnumeros)[0]=25;

que PRIMERO convierte la dirección al arreglo en un arreglo, y luego accesa a su elemento. Ahí debería funcionar sin problemas.

Los arreglos de punteros se usan por ejemplo para crear matrices bidimensionales y la verdad no tiene nada que ver con tu ejercicio. Para tu caso yo recomendaría una solución más senclla, como:

Código:
void llenar(int* numeros)
  {
      numeros[0]=25;
      numeros[1]=50;
  }

void main()
  {
     int numeros[2];

     llenar(numeros);
     printf("%d, %d ",numeros[0],numeros[1]);

     getch();
   }

Puesto que en C un arreglo es un puntero (al primer elemento del array), "numeros" es a la vez un arreglo de int, y un puntero a int. Con esto debería funcionar perfectamente, no se por qué te fuiste por una solución tan complicada.

Espero te ayude  :)
Yoel.
En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Arreglo char* en funcion
Programación C/C++
netca 1 1,311 Último mensaje 15 Agosto 2012, 00:06 am
por тαптяα
arreglo de punteros y funciones
Programación C/C++
m@o_614 9 2,693 Último mensaje 30 Agosto 2013, 17:38 pm
por rir3760
función con arreglo de punteros. C++ « 1 2 »
Programación C/C++
yookino 10 4,551 Último mensaje 6 Febrero 2014, 16:59 pm
por yookino
Pasar a función un arreglo con punteros o con el nombre del arreglo como puntero
Programación C/C++
NOB2014 3 1,808 Último mensaje 9 Junio 2016, 17:10 pm
por geeke
Confusión: arreglo de arreglo de strings (o con punteros)
Programación C/C++
Skali 3 892 Último mensaje 18 Mayo 2018, 19:22 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines