sábado, 3 de abril de 2010

[C/C++] --> Introducción a los punteros

En la gestión estática de memoria es necesario conocer de antemano los tamaños y formas de las estructuras, sin embargo, hay muchos programas cuyas estructuras de datos pueden variar de forma y tamaño.

Las variables son estáticas en el sentido en que se declaran en el programa, se designan por medio del identificador declarado, y se reserva para ellas un espacio en memoria en tiempo de compilación. El contenido de la variable puede cambiar, pero no el tamaño de memoria reservado para ella.

Sin embargo C permite la posibilidad de crear o destruir variables en tiempo de ejecución, a medida que van siendo necesitadas, no tienen nombre y se denominan anónimas. La forma de acceder a ellas es el tipo puntero.

Un puntero es una variable cuyo valor es la dirección de memoria de otra variable. Esto quiere decir que un puntero se refiere indirectamente a un valor. Por tanto, no hay que confundir una dirección de memoria con el contenido de esa dirección de memoria.



Ejemplos de declaración de punteros:

int *contador; // puntero a una variable de tipo entero
char *caracter; // puntero a una variable de tipo carácter

La variable contador no contiene un valor entero, sino la dirección de memoria donde está almacenado un valor de tipo entero.

Para asignar un puntero usaremos el operador de dirección &.

int q,m; // q y m son variables de tipo entero
int *contador; // contador es un puntero a un entero

q=100;
m=200;
contador=&m; // contador contiene la dirección de m

En la última línea contador recibe la dirección de m.

Si quiero ahora almacenar en la variable q el contenido de la variable a la que apunta contador, lo haré de la siguiente forma:

q= *contador;

No hay comentarios:

Publicar un comentario