Listas enlazadas

Solo disponible en BuenasTareas
  • Páginas : 14 (3308 palabras )
  • Descarga(s) : 4
  • Publicado : 28 de mayo de 2010
Leer documento completo
Vista previa del texto
¿Qué es la asignación dinámica?
Hasta este punto del tutorial de C las variables que se han utilizado en los programas son de tipo estáticas. (Algunas de ellas han sido automáticas y fueron asignadas dinámicamente para Usted por el sistema pero esta operación pasó inadvertida para Usted). En este capítulo estudiaremos algunas variables asignadas dinámicamente, éstas son variables que no existencuando se carga el programa pero se crean dinámicamente cuando son necesarias al correr el programa. Es posible, utilizando éstas técnicas crear tantas variables como sea necesario, utilizarlas y removerlas de su espacio en memoria para que sea utilizado por otras variables, como es costumbre, un ejemplo habla bién del concepto:
#include #include#include struct animal { char nombre[25]; char raza[25]; int edad; } *mascota1, *mascota2, *mascota3; int main() { mascota1 = (struct animal *)malloc(sizeof(struct animal));/* Es un error no checar la asignacion, consulte el texto. */ /* Checaremos la asignacion en el siguiente programa. */ strcpy(mascota1->nombre, "General"); strcpy(mascota1->raza, "Colicondela"); mascota1->edad = 1; /* mascota2 ahora señala a la construccion de arriba */mascota2 = mascota1; mascota1 = (struct animal *)malloc(sizeof(struct animal)); strcpy(mascota1->nombre, "Francisco"); strcpy(mascota1->raza, "Labrador Cobrador"); mascota1->edad = 3; mascota3 = (struct animal *)malloc(sizeof(struct animal));strcpy(mascota3->nombre, "Cristal"); strcpy(mascota3->raza, "Pastor Aleman"); mascota3->edad = 4; /* Desplegamos los datos */ printf("%s es un %s, y su edad es de %d.\n", mascota1->nombre, mascota1->raza, mascota1->edad); printf("%s es un %s, y su edad es de %d.\n",mascota2->nombre, mascota2->raza, mascota2->edad); printf("%s es un %s, y su edad es de %d.\n", mascota3->nombre, mascota3->raza, mascota3->edad); /* mascota1 señala a la misma estructura que mascota3 */ mascota1 = mascota3; free(mascota3); /* Esto libera una estructura */free(mascota2); /* Esto libera otra estructura*/ /* free(mascota1); esto no se puede hacer, consulte el texto */ return 0; } |
Empezamos definiendo una estructura llamada animal con algunos campos en relación a unos perros, no definimos ninguna variable de éste tipo sólo tres punteros, si Usted busca en elresto del código del programa no encontrará ninguna variable definida por lo que no tenemos en donde almacenar datos, todo lo que tenemos para trabajar son tres punteros, cada uno de los cuales es capaz de señalar a variables de la estructura definida llamada animal. Para hacer cualquier cosa con el programa necesitamos algunas variables por lo que las crearemos dinámicamente
Creación dinámica devariables
El enunciado en la línea 15 asigna algo al puntero mascota1 creará una estructura dinámica conteniendo tres variables, el corazón del enunciado es la función malloc ( ) gravada en el centro del enunciado. Esta es una función para asignar memoria que requiere el resto del código de la línea para cumplir su objetivo. La función malloc ( ), por defecto, asignará una parte de memoria en una...
tracking img