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.
0 comentarios: