Características de los Apuntadores
Son variables que mantienen direcciones de memoria
Poderosos para manejar datos, de manera no posible en otros lenguajes
Permiten el pasaje de parámetros por referencia.
Cuando se utilizan de manera incorrecta, son una fuente de bugs en los programas y
frustración en el programador
Introducción
Al ejecutarse un programa, las variables se almacenan en memoria, cada una en su propia
y única dirección o localidad. Las variables en general contienen un valor o dato. Por ejemplo
cuando se declara:
int count = 5;
El valor "5" es almacenado en memoria y puede ser accedido usando la variable count
Un apuntador es un tipo especial de variable que en lugar de contener un valor o dato,
contiene una dirección de memoria. Así como los datos pueden modificarse cuando se trabaja con
una variable normal, el valor de la dirección almacenada en un apuntador también puede
modificarse. Usualmente, la dirección almacenada en el apuntador es la dirección correspondiente
a alguna otra variable del programa.
int *ptr;
ptr = &count /* Guarda dirección de count en ptr */
/* el operador unario & retorna la dirección de la variable */
Para tomar el valor o contenido que es almacenado en la localidad de memoriam en el apuntador,
es necesario de referenciar al apuntador. Esto se hace usando el operador unario
int total;
total = *ptr;
/* The value in the address stored in ptr is assigned to total */
La mejor manera de aprender apuntadores es con la practica y los ejemplos. Los
apuntadores son un típico difícil. No se preocupen si el panorama no esta completamente claro
todavía.
Ejemplo de Declaración e Inicialización
int main()
{
int j;
int k;
int l;
int *pt1; /* Declares an integer pointer */
int *pt2; /* Declares an integer pointer */
float values[100];
float results[100];
float *pt3; /* Declares a float pointer */
float *pt4; /* Declares a float pointer */
j = 1;
k = 2;
pt1 = &j; /* pt1 contains the address of the variable j */
pt2 = &k; /* pt2 contains the address of variable k */
pt3 = values;
/* pt3 contains the address of the first element of values */
pt3 = &values[0];
/* This is the equivalent of the above statement */
return 0;
}