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
Navigation: Left / Right Arrows