Programación General > C/C++

 Problema imprimir direccion de puntero en C++

(1/1)

fachamix:
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++ --- #include <iostream>#include <stdio.h>#include <vector> using namespace std; int main(){    vector<int> vint_vector(10,99);    vint_vector[0] = 1;    vint_vector[1] = 2;    vint_vector[2] = 3;    vint_vector[3] = 4;      cout << "BEGIN = " << &vint_vector.begin() << endl;          //---> prints a wrong address    printf("BEGIN = %p \n\r",vint_vector.begin());    for (int i = 0; i <= 10; i++)    {        cout << "i = " << i << " direccion vint_vector[i] = " << &vint_vector[i] << endl;    }    printf("END = %p \n\r", vint_vector.end());    cout << "END = " << &vint_vector.end() << endl;             //---> prints a wrong address     return 0;}

Eternal Idol:
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++ ---ostream& operator<<(ostream& os, vector<int>::iterator& dt){        os << hex << *(int*)&dt;        return os;}...cout << "BEGIN = " << vint_vector.begin() << endl; 
La misma idea para obtener la direccion:

--- Código: C++ ---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.

fachamix:
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.

Eternal Idol:
De nadas  :kicking:

Navegación

[0] Índice de Mensajes

Ir a la versión completa