• Miércoles 20 de Noviembre de 2024, 14:35

Autor Tema:  Problema imprimir direccion de puntero en C++  (Leído 3154 veces)

fachamix

  • Miembro MUY activo
  • ***
  • Mensajes: 173
  • Nacionalidad: ar
    • Ver Perfil
Problema imprimir direccion de puntero en C++
« en: Miércoles 16 de Noviembre de 2011, 14:05 »
0
Tengo problemas imprimiendo la direccion de un puntero usando "cout"

Pongo las 2 formas, con printf y cou y devuelven diferentes resultados.

Que estoy haciendo mal ?


Código: C++
  1.  
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.     vector<int> vint_vector(10,99);
  11.     vint_vector[0] = 1;
  12.     vint_vector[1] = 2;
  13.     vint_vector[2] = 3;
  14.     vint_vector[3] = 4;
  15.  
  16.  
  17.     cout << "BEGIN = " << &vint_vector.begin() << endl;          //---> prints a wrong address
  18.     printf("BEGIN = %p \n\r",vint_vector.begin());
  19.     for (int i = 0; i <= 10; i++)
  20.     {
  21.         cout << "i = " << i << " direccion vint_vector[i] = " << &vint_vector[i] << endl;
  22.     }
  23.     printf("END = %p \n\r", vint_vector.end());
  24.     cout << "END = " << &vint_vector.end() << endl;             //---> prints a wrong address
  25.  
  26.     return 0;
  27. }
La muerte vive celosa, de mi amada flor la vida. Dicen que me anda buscando, ojala si un dia me pilla. Me alle MACHAO Y CANTANDO PA QUE SE MUERA DE ENVIDIA

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re:Problema imprimir direccion de puntero en C++
« Respuesta #1 en: Sábado 19 de Noviembre de 2011, 12:29 »
0
Con cout estas usando & (con printf no) seguramente por la falta de un operador que reciba como parametro un iterador de vector.

Código: C++
  1. ostream& operator<<(ostream& os, vector<int>::iterator& dt)
  2. {
  3.         os << hex << *(int*)&dt;
  4.         return os;
  5. }
  6. ...
  7. cout << "BEGIN = " << vint_vector.begin() << endl;
  8.  

La misma idea para obtener la direccion:
Código: C++
  1. cout << "BEGIN = " << hex << *(int*)&vint_vector.begin() << endl;

Igual es al reverendo pedo, fijate que &vint_vector[0] te da begin y &vint_vector[10] te da end.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

fachamix

  • Miembro MUY activo
  • ***
  • Mensajes: 173
  • Nacionalidad: ar
    • Ver Perfil
Re:Problema imprimir direccion de puntero en C++
« Respuesta #2 en: Lunes 21 de Noviembre de 2011, 13:20 »
0
Gracias che. Sabia que "&vint_vector[0] te da begin y &vint_vector[10] te da end." pero no queria quedarme con la duda.

Luego de buscar un poco , me di cuenta de que cout y << no estaban especificados para trabajar con un interador de este tipo.
... es decir.... lo mismo que me dijiste vos.

ah!, de 4 foros, sos el unico que me pudo decir esto.

Saludos y muchas gracias.
La muerte vive celosa, de mi amada flor la vida. Dicen que me anda buscando, ojala si un dia me pilla. Me alle MACHAO Y CANTANDO PA QUE SE MUERA DE ENVIDIA

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re:Problema imprimir direccion de puntero en C++
« Respuesta #3 en: Lunes 21 de Noviembre de 2011, 17:01 »
0
De nadas  :kicking:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.