República Bolivariana de Venezuela
Ministerio del Poder Popular para la Defensa
Universidad Experimental Politécnica de la
Fuerza Armada Nacional Bolivariana
Núcleo La Guaira
ASIGN
ACIÓN
DINÁM
ICA DE
MEMO
RIA
Profesor. Alumno.
Cumare, Nolis. Sánchez, Joerfre
Asignación dinámica de memoria
La asignación dinámica de memoria se refiere a asignar memoria de acuerdo la
vayamos necesitando.
Se hace uso de punteros o apuntador.
Puntero: Variable que almacena una dirección de memoria. Se pueden tener
apuntadores a cualquier tipo de variable.
Operadores
El operador unario o monádico &: Devuelve la dirección de memoria de una variable.
El operador de indirección o de referencia *: Devuelve el “contenido de un objeto
apuntado por un puntero o un apuntador”.
Declaración de punteros
Para una variable entera:
int *p; //p es una variable puntero, que apunta a un entero
Para una variable char:
char *q; //q es una variable puntero que apunta a un char
Asignar valor de dirección de memoria a punteros:
Con la dirección de otra variable:
int *r, x;
r=&x; //r es una variable puntero, que apunta a un entero dado por x
Con operador new (en c++):
Asignar valor de dirección de memoria a punteros:
int *puntero1;
puntero1= new int; //puntero1 es una variable puntero, que apunta a un
entero
Con funcion malloc():
char *p;
P=char *malloc()
//p es una variable puntero, que apunta a un char
char *z;
z=(char *) malloc(100);
//z es una variable puntero a la que se le asignan 100 bytes de memoria
La asignación dinámica de memoria es una característica del lenguaje C. Le permite al
usuario crear tipos de datos y estructuras de cualquier tamaño de acuerdo a las
necesidades que se tengan en el programa.
Se revisarán dos de las aplicaciones más comunes:
• Arreglos dinámicos
• Estructuras dinámicas de datos.
Estructuras de datos lineales
Existen distintas estructuras de datos, que nos ayudaran a mejorar el orden y la forma
en la que debemos procesar los datos, desde cambiar la forma de guardar los datos, el
orden y los métodos.
Esta estructura puede ser dinámica y estática, la estructura estática son aquellas con
un tamaño definido antes de que el programa se ejecute y no puede modificarse dicho
tamaño durante la ejecución del programa. En cambio la estructura dinámica no tiene
una limitación de tamaño.
A continuación veremos los tres tipos de estructuras:
Pilas: Utilizan una estructura filo(First In Last Out), el primero que entra será el último
en salir.
Será un procesamiento los últimos datos que añadimos como los primeros, es un
orden inverso. La importancia de las pilas es que se usan implícitamente en programas
recursivos. En la imagen siguiente podemos ver un esquema.
Colas: una estructura fifo(First In First Out), el primero que entra será el primero en
salir.
Un ejemplo claro es la cola de un supermercado, el primero en llegar será el primero
en pagar. Algunos de sus usos son las búsquedas de datos. En la imagen siguiente
veremos un esquema.
Listas enlazadas: Sera una array donde por cada casilla tendremos dos valores.
El valor de la casilla y la posición de la siguiente casilla, para enlazar una con la
siguiente, si quisiéramos cambiar el orden solamente debemos de cambiar el segundo
valor ya que es el siguiente valor en la lista.