Los punteros permiten simular el paso por referencia, crear y manipular estructuras dinámicas de datos, tales como listas enlazadas, pilas, colas y árboles.
Generalmente las variables contienen valores específicos. Los punteros por otro lado son variables pero en vez de contener un valor especifico, contienen las direcciones de las variables a las que apuntan.
En C es posible obtener la dirección de cualquier variable usando el operador unario de prefijo ‘&’. Para que sea útil esta dirección, se requiere almacenarla en alguna variable.
Estas variables son los punteros. Por ejemplo:
- int v= 20;
- int *p; /* Declara el puntero p */
- p= &v; /* Obtiene la dirección de v */
El * en la declaración int *p indica que p es un puntero, es decir una variable que almacena la dirección de otra variable. El int en int *p especifica además que la dirección almacenada es la de una variable de tipo int. La siguiente figura muestra conceptualmente como se relacionan las variables v y p:
Por lo tanto : Un puntero es como una llave de un locker numerado, tendrás acceso al contenido del locker si y solo si utilizas la llave primero para abrir el locker.