ayuda punteros

Jenny
20 de Febrero del 2004
Si me encuentro con esto, me podria decir alguien lo que contiene en cada caso:

int i=3, *q=&i

cout<<q
cout<<*q
cout<<&q

+ Entiendo que *q contiene la direccion de memoria de i
+ q me da como resultado una direccion y no se a quien corresponde
+ &q deberia indicar la direccion a la que apunta, es decir la direccion de i, entonces no seria la misma direccion que *p

AYUDA GRACIAS!!


Martin Ribelotta
20 de Febrero del 2004
Para cout<<q:
Debuelve un numero exadecimal que es la pocicion de memoria a la que aputa q (en este caso la direccion de i)

Para cout<<*q devuelve el valor que tiene la variable a la que apunta q (el valor de i, 3)

Para cout<<&q debuelve la direccion de memoria del puntero q.

Alejadnro 2.0
20 de Febrero del 2004
Veamos, separado en partes tienes:

int i;
int *q;

i = 3;
q = &i;

/* la variable i es entera y se le asigna el valor 3;
q es un puntero a entero que guarda la dirección de i,
de modo que se puede decir que *q == 3; */

cout<<q; // mostrará la dirección de i, igual que cout<< &i;
cout<<*q; // mostrará un 3, igual que cout<< i;
cout<<&q // mostrará la dirección de q;

Cuando uno dice que q = &i; está diciendo que *q == i; y no que q vaya a estar en el mismo lugar que i.