Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Luchoz95 en 26 Marzo 2013, 02:45 am



Título: Dudas Punteros
Publicado por: Luchoz95 en 26 Marzo 2013, 02:45 am
Hola recien me estoy iniciando con el tema de punteros y tengo una duda ...

supongamos que creo una variable int

Código
  1. int a;

y le asignamos como valor 10

Código
  1. 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
  1. int *pt1;

y le asignamos lo siguiente ...

Código
  1. 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 ?



Título: Re: Dudas Punteros
Publicado por: rir3760 en 26 Marzo 2013, 03:53 am
Código
  1. 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.

Código
  1. int *pt1;
y le asignamos lo siguiente ...
Código
  1. 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


Título: Re: Dudas Punteros
Publicado por: 85 en 26 Marzo 2013, 14:26 pm
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:

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








Título: Re: Dudas Punteros
Publicado por: Luchoz95 en 26 Marzo 2013, 18:31 pm
Muchas Gracias por las respuestas !!! me sirvieron de mucho !


Título: Re: Dudas Punteros
Publicado por: 85 en 28 Marzo 2013, 15:40 pm

Tenés otros ejemplos más

http://foro.elhacker.net/programacion_cc/manipulacion_de_punteros_ejemplo_con_float-t358223.0.html