Cuando buscamos una definición para el termino variable habitualmente encontramos la definición matematica, que nos indica que es un valor que no es constante y que se representa a través de una literal, pero, para los términos de programación en realidad estamos hablando de un espacio en la memoria RAM que hemos reservado para almacenar un valor.
Al crear una variable, declaramos el nombre y el tipo de dato, con ello lo que hacemos es asignar un nombre con el que nos podemos referir a una dirección de la memoria RAM para almacenar un valor determinado, al declarar el tipo de dato de la variable, estamos indicando el tamaño de la porción de RAM que deseamos emplear.
Al declarar en C++ una variable de la siguiente forma:
int edad=18;
lo que estamos haciendo es reservando un espacio de RAM al cual llamaremos edad con un tamaño de 32 bits, dentro del cual almacenaremos números, con lo cual podemos almacenar cantidades desde el -2,147,483,648 hasta el 2,147,483,647.
Las variables como tal, solo reservan un solo espacio en memoria, pero esto es poco productivo en programas que maneja una gran cantidad de datos, razón por la que para manejar múltiples datos debemos recurrir a las dos estructuras de datos.
Las estructuras de datos nos ayudan a manipular múltiples datos en la memoria haciendo uso de un solo nombre.
Las estructuras de datos pueden ser clasificadas de acuerdo a la forma en como reservan los espacios de la memoria RAM en :
Estructuras estéticas
Las estructuras de datos estáticas reservan múltiples posiciones de memoria que esta ubicada de forma contigua, para hacer referencia a ellas, a través de un índice o indicador que las enumera, tienen la ventaja de ser accesibles de forma aleatoria como es el caso de los vectores, matrices y arreglos multidimensionales.
Estructuras dinámicas
Las estructuras de datos dinámicas usan el espacio en la memoria RAM con forme lo vayan utilizando, de tal forma que estas puedes crecer o decrecer durante la ejecución del programa, en la mayoría de los lenguajes de programación se usan apuntadores de memoria que permiten vincular las distintas posiciones. El problema principal con las estructuras dinámicas es que estas son accesibles de forma secuencial, de acuerdo a un orden establecido.