Punteros

PUNTEROS EN LENGUAJE C

Cómo se organiza la memoria asociada a un programa? 
Es una colección de posiciones de memoria consecutivas. En ellas se almacenan los distintos tipos de datos, que ocupan, por ejemplo:
1 char = 1 byte
1 int = 2 bytes
1 float = 4 bytes 






Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria. Los punteros, por lo tanto, guardan en dos o cuatro posiciones de memoria, la dirección de un conjunto de celdas.


 Operadores asociados a punteros
&: me da la dirección de un objeto en la memoria. Sólo sirve para posiciones de memoria (puede apuntar a variables o a vectores, pero no a constantes o expresiones). 


Ejemplo:
dm = &m; printf (“\nNo tiene lo mismo %c que %d”, m, dm); /*
Ojo, %d para pc*/ 


*: me da el contenido de una posición de memoria (generalmente almacenada en un puntero). Se le llama también operador indirección. Por lo tanto es equivalente: 


printf (“\nTiene lo mismo %d que %d”, &m, dm); /* Direcciones */
printf (“\nTiene lo mismo %c que %c”, c, *pc); /* Caracteres */ 


Un puntero siempre está asociado a objetos de un tipo -> sólo puede apuntar a objetos (variables o vectores) de ese tipo.
int *ip; /* Sólo puede apuntar a variables enteras */
char *c; /* Sólo puede apuntar a variables carácter */
double *dp, /* dp sólo puede apuntar a variables reales */ 


Veamos un  programa como ejemplo de un puntero. 



#include <stdio.h>
void main()
{
float N = 2.1; // Declaro mi variable de punto flotante y le asigno 2,1.
float *ptr; // una variable ptr que almacenara una direccion de memoria
// en la que habra una variable de punto flotante.
ptr = &N; // Le asigno a ptr la direccion de memoria de N, con el &. 


printf(”La direccion de N es %X\n” , ptr); // Imprimo el contenido de ptr // recordemos que es la direccion de memoria de N.
printf(”El valor de N es %.1f\n”, *ptr); // Imprimo el CONTENIDO de la // DIRECCION a la que apunta ptr.
} 
Entonces, vimos que un puntero es una variable que almacena un numero entero, una dirección de la memoria, y ademas vimos que un puntero “apunta” a un tipo de dato en especial.






About the author

Andres
Deja tu comentario :

0 comentarios:

Copyright © 2013 Lenguaje c and Blogger Themes.