Data Structures

Arrays & Vectors Step by Step

Memory contiguity, zero-indexing, and array models in C, Java, JS, and Python.

SLIDE 1 / 6

1. Contiguity & Zero Indexing

An array stores elements in consecutive RAM locations. The address is derived from base_addr + index * element_size.

RAM CELL STRUCTURE
arr[0]Valor: 10 (0x1000)
arr[1]Valor: 20 (0x1004)
arr[2]Valor: 30 (0x1008)

2. C: Arrays Fijos e Índices

En C el tamaño del arreglo es fijo en tiempo de compilación (salvo VLA/malloc). No hay chequeo de límites (out-of-bounds).

array.c
int numeros[5] = {10, 20, 30, 40, 50};
int primer = numeros[0]; // 10

3. Java: Arrays como Objetos (.length)

En Java los arrays son objetos en el Heap con una propiedad fija `.length` y lanzan `ArrayIndexOutOfBoundsException` si el índice es inválido.

ArrayTest.java
int[] nums = new int[]{1, 2, 3};
System.out.println(nums.length); // 3

4. JavaScript: Arrays Dinámicos y Heterogéneos

JS ofrece arrays dinámicos que pueden cambiar de tamaño automáticamente y contener tipos mixtos.

array.js
const lista = [10, "Hola", true];
lista.push(99); // Crecimiento dinámico

5. Python: Listas y Slicing

Las listas en Python son arrays dinámicos de referencias a objetos y soportan slicing avanzado `list[start:stop:step]`.

lists.py
nums = [10, 20, 30, 40, 50]
sub = nums[1:4] # [20, 30, 40]

6. Array Inspector

Visualize indexing by location:

Índice arr[0]
Dirección Base ➔ 0x1000 ➔ Valor: 10
Índice arr[2]
Dirección Base + (2 × 4 bytes) ➔ 0x1008 ➔ Valor: 30