Arreglos: memoria contigua y aritmética de apuntadores

lunes 17 de agosto · 13:0014:15 · hace 5 días

Guía del maestro.docx

GUÍA 17-08-26 Estructuras de Datos

CN122 · lunes 17/08/2026 · 13:00-14:15 · Sesión 3

Arreglos: memoria contigua y aritmética de apuntadores


QUÉ ES REALMENTE UN ARREGLO EN C

Un arreglo es un bloque contiguo de memoria y un nombre que apunta a su primer elemento. No hay metadatos: C no guarda el tamaño, no verifica límites y no sabe dónde termina. Todo eso es responsabilidad del programador.

LA EQUIVALENCIA FUNDAMENTAL

  • a[i] es idéntico a *(a + i). El compilador traduce el primero al segundo.
  • a + i no suma i bytes: suma i·sizeof(tipo) bytes. La aritmética de apuntadores está escalada por el tipo.
  • Consecuencia curiosa pero real: a[i] == i[a], porque la suma es conmutativa.

POR QUÉ EL ACCESO ES O(1)

La dirección del elemento i se calcula con una multiplicación y una suma: base + i·tamaño. No hay que recorrer nada. Esa es la única razón por la que el arreglo es la estructura más rápida para acceso aleatorio, y también la razón de todas sus limitaciones.

LO QUE SE PAGA A CAMBIO

  • Tamaño fijo en tiempo de compilación (salvo VLA o memoria dinámica).
  • Insertar o borrar en medio cuesta O(n) por el corrimiento.
  • Necesita un bloque contiguo libre; con memoria fragmentada puede fallar aunque haya espacio total suficiente.

EL ARREGLO DECAE A APUNTADOR

Al pasar un arreglo a una función, se pasa solo la dirección base. Dentro de la función sizeof(a) devuelve el tamaño de un apuntador, no del arreglo. Por eso toda función que recibe un arreglo debe recibir también su longitud.

  • void imprimir(int a[], int n) · el [] es azúcar sintáctica de int *a.

ERRORES CLÁSICOS

  • Escribir en a[n] — está fuera del arreglo y C no lo impide; corrompe memoria en silencio.
  • Usar sizeof(a)/sizeof(a[0]) dentro de una función: da 1 o 2, no la longitud.

PRÁCTICA

Implementar búsqueda del máximo, inversión in situ y rotación de un arreglo, todas recibiendo la longitud como parámetro.

Mis notas75 palabras
.docx
Tareas propias de esta sesión
1.-Qué es tiempo discreto?
2.-Qué es tiempo continuo?
3.-Leer caldor fax capitulo 4 pero yo debo leerlo completo
4.-Leer algo sobre econometría, microeconomía y macroeconomía
Coeficiente de relación en tiempo discreto
Ecuación
Ecuación
B igual que A
Como A, pero
Dividimos todo entre de la ecuación 2
R+ -> R+
1.-Convierta a tiempo continuo
2.-Explique el significado del coeficiente
Estamos modelando el tiempo de forma más específica
Todo está íntimamente relacionado con una derivada logarítmica