Punteros

Sintaxis

tipo *identificador_puntero;

Los punteros almacenan direcciones de memoria. Para definir variables tipo puntero se hace igual que para definir otras variables pero precediendo su nombre de un "*". El nombre del tipo del puntero es tipo *. Si se desea definir un puntero genérico a cualquier tipo de datos se debe usar "void *".

Aspectos relacionados con los punteros:

Los punteros pueden apuntar a datos en cualquiera de las tres zonas de memoria de los programas: memoria global, pila de ejecución y memoria dinámica.

Ejemplo

En la función main se definen y usan algunos punteros.

#include <stdio.h>
int main(){
   /* Se definen: dos enteros i y j, un puntero pi a un entero y un puntero ppi a un puntero, a un entero */
   int i, j, *pi, **ppi; 
   pi = &i;     /* pi señala a la variable i */
   *pi = 3;     /* se le asigna un 3 a i */
   ppi = &pi;   /* ppi apunta a pi */
   j = **ppi;    
   printf("El valor de j es %d\n",j);
   return 0;
}

En las siguientes gráficas se representa la memoria (pila) donde se encuentran las variables del ejemplo y su modificación con su ejecución paso a paso.

Representación en memoria
Representación en memoria