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)
| | |-+  [AYUDA] Código mal escrito.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [AYUDA] Código mal escrito.  (Leído 1,493 veces)
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
[AYUDA] Código mal escrito.
« en: 18 Mayo 2013, 01:50 am »

Necesito ayuda con este código qué para uds seguro es algo sencillo de resolverme.

Este es el código:
Código
  1. # include <iostream>
  2. using namespace std;
  3.  
  4. void muestraD_arreglo(int **pArreglo[])
  5. {
  6.     cout << pArreglo[0] << endl;
  7.     cout << pArreglo[1] << endl;
  8.     cout << pArreglo[2] << endl;
  9.     cout << pArreglo[3] << endl;
  10. }
  11. int main()
  12. {
  13.    int b = 15 , c = 30 , d = 29 , e = 76 ;
  14.  
  15.    int *a[4];
  16.  
  17.    a[0] = &b;
  18.    a[1] = &c;
  19.    a[2] = &d;
  20.    a[3] = &e;
  21.  
  22.    muestraD_arreglo(&a);  
  23.  
  24. system("pause>nul");
  25. return 0;    
  26.  
  27. }
  28.  

Lo qué intento hacer es pasar la dirección de memoria de un arreglo que a la vez es un puntero.


« Última modificación: 18 Mayo 2013, 01:56 am por Zodiak98 » En línea

CCross

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: [AYUDA] Código mal escrito.
« Respuesta #1 en: 18 Mayo 2013, 03:12 am »

Hola prueba de esta forma, te imprimira cada direccion de las variables apuntada
por el vector de punteros creo que es eso lo que buscas.

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void muestraD_arreglo(int* pArreglo[])
  6. {
  7.     cout << (int)pArreglo[0] << endl; // Si quieres los valores seria *pArreglo[0]
  8.     cout << (int)pArreglo[1] << endl;
  9.     cout << (int)pArreglo[2] << endl;
  10.     cout << (int)pArreglo[3] << endl;
  11. }
  12.  
  13. int main()
  14. {
  15.    int b = 15 , c = 30 , d = 29 , e = 76 ;
  16.    int *a[4];
  17.  
  18.    a[0] = &b;
  19.    a[1] = &c;
  20.    a[2] = &d;
  21.    a[3] = &e;
  22.  
  23.    muestraD_arreglo(a);
  24.  
  25.    cin.get();
  26.    return 0;
  27. }
  28.  

Saludos   ;D


« Última modificación: 18 Mayo 2013, 03:29 am por CCross » En línea

Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: [AYUDA] Código mal escrito.
« Respuesta #2 en: 18 Mayo 2013, 15:46 pm »

Hola prueba de esta forma, te imprimira cada direccion de las variables apuntada
por el vector de punteros creo que es eso lo que buscas.

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void muestraD_arreglo(int* pArreglo[])
  6. {
  7.     cout << (int)pArreglo[0] << endl; // Si quieres los valores seria *pArreglo[0]
  8.     cout << (int)pArreglo[1] << endl;
  9.     cout << (int)pArreglo[2] << endl;
  10.     cout << (int)pArreglo[3] << endl;
  11. }
  12.  
  13. int main()
  14. {
  15.    int b = 15 , c = 30 , d = 29 , e = 76 ;
  16.    int *a[4];
  17.  
  18.    a[0] = &b;
  19.    a[1] = &c;
  20.    a[2] = &d;
  21.    a[3] = &e;
  22.  
  23.    muestraD_arreglo(a);
  24.  
  25.    cin.get();
  26.    return 0;
  27. }
  28.  

Saludos   ;D

Hehe gracias, pero ya había intentado eso. Lo qué intento hacer es, no pasar la direcciones de memoria que almacena el arreglo, si no, la dirección de memoria de cada arreglo como tal. En pocas palabras un doble puntero.

Un doble puntero "simple" se pasaría así:
Código
  1. int main()
  2. {
  3. int a = 20;
  4. int *b = &a;
  5.  
  6. pPuntero(&b);
  7.  
  8. }
  9.  
  10. //Y la función tendria esta forma:
  11. void pPuntero(int **p)
  12. {
  13. cout << p << endl; //Muestra dirección del puntero 'b'.
  14. cout << *p << endl; //Muestra dirección de la variable a la que apunta el primer puntero 'b'.
  15. cout << **p << endl; //Muestra el valor de la variable a la que apunta el primer puntero 'b'.
  16. }
  17.  

Ahora estoy tratando de hacer eso mismo pero con un arreglo.
« Última modificación: 18 Mayo 2013, 16:05 pm por Zodiak98 » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: [AYUDA] Código mal escrito.
« Respuesta #3 en: 18 Mayo 2013, 16:04 pm »

Ahora estoy tratando de hacer eso mismo pero con un arreglo.
Es igual pero sustituyendo el [] por un asterisco en la definición de la función:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void muestraD_arreglo(int** pArreglo)
  6. {
  7.     cout << (int)pArreglo[0] << endl;
  8.     cout << (int)pArreglo[1] << endl;
  9.     cout << (int)pArreglo[2] << endl;
  10.     cout << (int)pArreglo[3] << endl;
  11. }
  12.  
  13. int main()
  14. {
  15.    int b = 15 , c = 30 , d = 29 , e = 76 ;
  16.    int *a[4];
  17.  
  18.    a[0] = &b;
  19.    a[1] = &c;
  20.    a[2] = &d;
  21.    a[3] = &e;
  22.  
  23.    muestraD_arreglo(a);
  24.  
  25.    cin.get();
  26.    return 0;
  27. }

O si lo prefieres:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void muestraD_arreglo(int** pArreglo)
  6. {
  7.     cout << (int) *(pArreglo) << endl;
  8.     cout << (int) *(pArreglo+1) << endl;
  9.     cout << (int) *(pArreglo+2) << endl;
  10.     cout << (int) *(pArreglo+3) << endl;
  11. }
  12.  
  13. int main()
  14. {
  15.    int b = 15 , c = 30 , d = 29 , e = 76 ;
  16.    int *a[4];
  17.  
  18.    a[0] = &b;
  19.    a[1] = &c;
  20.    a[2] = &d;
  21.    a[3] = &e;
  22.  
  23.    muestraD_arreglo(a);
  24.  
  25.    cin.get();
  26.    return 0;
  27. }

Al fin al cabo, el [] no es más que una comodidad sintática. Se puede variar como quieras. El código de CCross era correcto.
« Última modificación: 18 Mayo 2013, 16:07 pm por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: [AYUDA] Código mal escrito.
« Respuesta #4 en: 18 Mayo 2013, 16:12 pm »

Creo qué no me he explicado bien. Lo qué trato de hacer es pasar la dirección de
a[0], a[1], a[2], a[3]. Ya qué cada uno tiene su dirección de memoria, esas direcciones son las que intento pasar. Qué a la vez son punteros que contienen almacenadas otras direcciones.

Hehe amchacon ya esta listo, no me había fijado en el segundo código que me pasaste. :)
« Última modificación: 18 Mayo 2013, 16:18 pm por Zodiak98 » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: [AYUDA] Código mal escrito.
« Respuesta #5 en: 18 Mayo 2013, 16:21 pm »

Hehe amchacon ya esta listo, no me había fijado en el segundo código que me pasaste. :)
Los tres códigos que se han posteado son equivalentes, es escribir lo mismo de distintas formas.

El operador [] es un operador de puntero al igual que * y &.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: [AYUDA] Código mal escrito.
« Respuesta #6 en: 18 Mayo 2013, 16:35 pm »

Hehe perdonen mi ignorancia.  :rolleyes: Pero sigo sin entender una cosa, es decir, que al yo hacer esto:
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void muestraD_arreglo(int *pArreglo[])
  6. {
  7.     cout <<  (pArreglo) << endl;
  8.     cout <<  (pArreglo + 1) << endl;
  9.     cout <<  (pArreglo + 2) << endl;
  10.     cout <<  (pArreglo + 3) << endl;
  11. }
  12.  
  13. int main()
  14. {
  15.    int b = 15 , c = 30 , d = 29 , e = 76 ;
  16.    int *a[4];
  17.  
  18.    a[0] = &b;
  19.    a[1] = &c;
  20.    a[2] = &d;
  21.    a[3] = &e;
  22.  
  23.    muestraD_arreglo(a);
  24.  
  25.    cin.get();
  26.    return 0;
  27. }
  28.  

Automaticamente me envia las dirreciones de memoria de cada arreglo?, es decir, &a[0], &a[1],&a[2],&a[3].

Hehe me puse a practicar una cosa y ya me di cuenta el porque. Hehe Debo aprender a no preguntar tanto sin si quiera hacer las cosas. >__<
« Última modificación: 18 Mayo 2013, 16:44 pm por Zodiak98 » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: [AYUDA] Código mal escrito.
« Respuesta #7 en: 18 Mayo 2013, 16:56 pm »

Automaticamente me envia las dirreciones de memoria de cada arreglo?, es decir, &a[0], &a[1],&a[2],&a[3].
En un arreglo, las variables se guardan consecutivamente en la memoria. De ahí que en el ejemplo haya puesto (+1,+2,+3...).

Pero supongo que ya te has dado cuenta :)
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Escrito sobre VMWare.
Tutoriales - Documentación
NemeSys 0 5,681 Último mensaje 3 Febrero 2005, 07:22 am
por NemeSys
Borrar registro una ves escrito
Programación Visual Basic
IvanUgu 3 1,081 Último mensaje 7 Septiembre 2005, 06:12 am
por Slasher-K
Servidor web escrito en C
Programación C/C++
Psicotron 7 3,419 Último mensaje 8 Septiembre 2016, 19:48 pm
por AlbertoBSD
Algoritmo escrito en C
Programación C/C++
Kyon-san 7 4,333 Último mensaje 25 Noviembre 2010, 22:04 pm
por ace332
Crear arbol sintactico para analizar un codigo fuente escrito en C++
Programación C/C++
Ytsejam92 3 1,626 Último mensaje 29 Septiembre 2016, 20:40 pm
por dato000
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines