Educación
TEMA 8: Gestión dinámica de memoria
8.1.-Tipo de datos puntero Hasta ahora, los tipos de datos que hemos visto (a excepción de strings y ficheros) eranestructuras de datos estáticas, es decir, estructuras que no pueden cambiar de tamaño a lo largo de todo el programa. Pero en los lenguajes dinámicos se pueden crear estructuras de datos dinámicas,estructuras que si que pueden variar su tamaño durante la ejecución del programa. Además es posible crearlas y destruirlas en cualquier punto del programa, de manera que las reglas de ámbito no las afectandirectamente. Este tipo de variables tienen sin embargo una diferencia muy importante con las variables estáticas y es que en general no tienen nombre que las identifique. Por eso necesitamos utilizarunas variables especiales para referenciar las variables dinámicas: los punteros. Un puntero es una variable que contiene una posición de memoria, y por tanto se dice que apunta a esa posición dememoria. Ejemplo: Puntero p Variable dinámica 1000
Declaración de un puntero en C++:
typedef tipo * NombreTipo; NombreTipo variable;
O directamente:
tipo * variable;
Ejemplo: Declaración de unpuntero a entero en C++:
Fernando Barber y Ricardo Ferrís
111
TEMA 8: Gestión dinámica de memoria
typedef int * Ptr_int; Ptr_int p_i;
O directamente:
int * p_i
El tipo de dato al queapunta el puntero (en el ejemplo int) se denomina tipo base del puntero. Se debe tener en cuenta que cuando declaramos una variable de tipo puntero sólo se reserva memoria para el puntero, NO para lavariable a la que apunta. Para obtener el contenido de una variable dinámica a la que apunta el puntero, utilizaremos el operador de indirección * seguido del nombre del puntero. Ejemplo:
*p_i = 5;cout numero = dato; aux;
return;
8.8.-Errores frecuentes Por último, hay que tener en cuenta que cuando se utilizan punteros es muy fácil provocar errores pero muy difícil encontrarlos, ya que...
Regístrate para leer el documento completo.