Duda con Punteros en C

Iniciado por LeoJ24, 13 Enero 2013, 19:42 PM

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

LeoJ24

Buenass...
Estoy estudiando los punteros en C y no me queda muy claro como funciona. la idea que tengo de los punteros es que por ej yo tengo:
Citarint var;
int *punt;
entonces esto significa que *punt apunta a la direccion de var?
y cuando quiera mostrarlo en pantalla tendria que poner esto?:
Citarprintf ("LA DIRECCION DE VAR ES: %d. SU VALOR ES: %i", &punt, var);
esta bien asi¿
Gracias de antemano.
salu2

zonahurbana

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

Con estas declaraciones, var es una variable de tipo entero, y punt es un puntero que puede almacenar la dirección de memoria de una variable entera.
Pero... no por estar las declaraciones una tras otra indica que punt almacena la dirección de var: eso no es cierto.

Para que punt almacene la dirección de memoria de var es necesaria otra sentencia que lo especifique:
Código (cpp) [Seleccionar]
int var, * punt;
punt = &var;


O en todo caso:
Código (cpp) [Seleccionar]
int var;
int * punt = &var;
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...

dooque

Hola!

Agrego un poco más de código de ejemplo:


int a = 0;
int * ptr = NULL;

ptr = &a; /* A "ptr" le asignamos la direccion de memoria de "a" */

printf("Direccion de memoria de ptr: 0x%X\n", &ptr);

printf("Direccion de memoria de a: 0x%X\n", &a);
printf("Direccion de memoria de a: 0x%X\n", ptr);

*ptr = 25;

printf("Valor de a: %i\n", a);
printf("Valor de a: %i\n", *ptr);


Saludos.
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.  -- Kernighan