Dudas Punteros

Iniciado por Luchoz95, 26 Marzo 2013, 02:45 AM

0 Miembros y 1 Visitante están viendo este tema.

Luchoz95

Hola recien me estoy iniciando con el tema de punteros y tengo una duda ...

supongamos que creo una variable int

Código (cpp) [Seleccionar]
int a;

y le asignamos como valor 10

Código (cpp) [Seleccionar]
a=10;

la variable a tiene guardado dos cosas : la direccion "XXXXX" y el valor "10"

calculo que hasta ahi todo bien.

bueno ahora creamos un puntero de tipo int

Código (cpp) [Seleccionar]
int *pt1;

y le asignamos lo siguiente ...

Código (cpp) [Seleccionar]
pt1=&a;

en la variable del puntero se va a guardar la direccion solamente de a osea "XXXXX" el valor no , ya que le esta dando que p1 es igual a la direccion(&a) de a , y no al valor .. me equivoco ?


rir3760

Cita de: Luchoz95 en 26 Marzo 2013, 02:45 AM
Código (cpp) [Seleccionar]
a=10;
la variable a tiene guardado dos cosas : la direccion "XXXXX" y el valor "10"
La variable "a" se almacena en alguna dirección de memoria (siguiendo el ejemplo esta es XXXXX), el valor ahí almacenado es 10.

Cita de: Luchoz95 en 26 Marzo 2013, 02:45 AM
Código (cpp) [Seleccionar]
int *pt1;
y le asignamos lo siguiente ...
Código (cpp) [Seleccionar]
pt1=&a;
en la variable del puntero se va a guardar la direccion solamente de a osea "XXXXX" el valor no
Correcto. Una variable de tipo "T *" es como cualquier otra con la diferencia que esta almacena direcciones de memoria. Para acceder al objeto apuntado (la variable "a") utilizas "*pt1".

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

85

#2
por ejemplo, veamos esto
http://www.zator.com/Cpp/E2_2a.htm

Las variables pueden ser de diferentes tipos de datos, los punteros son variables pero de tipo puntero en sí, independientemente si fueron declaradas como CHAR, INT, etc.

Con referencia a las variables de tipo puntero, es tal como te dijeron.

Algo que también está permitido es hacer typecasting de variables normales para poder usarlas como punteros. Algo que yo llamo un "pseudopuntero" pero es tan sólo el uso del typecasting.

por ejemplo:


int entero1=5;
DWORD pseudopuntero = (DWORD)&entero1;
printf("entero1 %X\n", &entero1);
printf("pseudopuntero %X\n", pseudopuntero);
printf("pseudopuntero %d\n", *(int*)pseudopuntero);
system("pause");


Nótese que para un "pseudopuntero" se requiere tener en cuenta el tipo de dato correcto para guardar una dirección de memoria, y el tipo correcto de dato para mostrar el valor de la variable.
Es algo mucho más complicado por eso se prefiere usar variables de tipo puntero directamente, las cuales son las correctas para todo esto.
Cualquier cosa se puede ver otro ejemplo
http://foro.elhacker.net/programacion_cc/pseudopunteros-t385862.0.html






Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

Luchoz95

Muchas Gracias por las respuestas !!! me sirvieron de mucho !

85

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/