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
Ir a la versión completa