Registros: struct y agrupación de datos heterogéneos
miércoles 26 de agosto · 13:00–14:15 · en 4 días
GUÍA 26-08-26 Estructuras de Datos
CN122 · miércoles 26/08/2026 · 13:00-14:15 · Sesión 6
Registros: struct y agrupación de datos heterogéneos
POR QUÉ HACEN FALTA
Un arreglo agrupa datos del mismo tipo. Un registro agrupa datos de tipos distintos que describen a una misma entidad: un alumno tiene matrícula entera, nombre de cadena y promedio flotante.
DECLARACIÓN
- struct Alumno { int matricula; char nombre[50]; float promedio; };
- Con typedef se evita repetir la palabra struct: typedef struct { … } Alumno;
ACCESO
- Con la variable: a.matricula
- Con apuntador: p->matricula, que es azúcar de (*p).matricula
ALINEACIÓN Y RELLENO
El compilador inserta bytes de relleno para que cada campo caiga en una frontera conveniente para el procesador. Por eso sizeof de un struct suele ser mayor que la suma de sus campos.
Reordenar los campos de mayor a menor tamaño reduce el relleno. En estructuras que se instancian millones de veces, eso es memoria real ahorrada.
PASO A FUNCIONES
- Por valor: se copia todo el struct. Costoso si es grande.
- Por apuntador: se pasan 8 bytes. Es lo habitual.
- Con const Alumno *a se pasa por apuntador y se documenta que no se modificará.
UNIÓN Y ENUMERACIÓN
- union — todos los campos comparten la misma memoria; solo uno es válido a la vez.
- enum — constantes enteras con nombre, útiles para el tipo de un registro variante.
PRÁCTICA
Definir un registro para una entidad de tu elección, escribir funciones de captura e impresión, y comparar sizeof antes y después de reordenar los campos.
Nada anotado en esta sesión todavía.