Estructura (struct)
Un tipo de dato que agrupa varios campos con nombre, como una ficha con nombre, precio y existencias.
Un struct reúne datos relacionados en un solo tipo. Cada campo tiene un nombre y un tipo, y se accede a él con un punto: producto.precio.
En C solo agrupa datos; en Go, Rust o C# también puede tener métodos, de forma parecida a una clase pero sin herencia.
Un ejemplo
struct Producto { nombre, precio, stock } describe cada artículo de un inventario.
Por qué importa
Casi cualquier programa maneja entidades con varios datos: un usuario con nombre, correo y edad; un producto con precio y existencias; un punto con coordenadas x e y. Sin estructuras tendrías que llevar variables sueltas y pasarlas una a una a cada función, con el riesgo de mezclar el orden. Un struct las agrupa bajo un solo nombre y un solo tipo, y el código se vuelve más legible y menos propenso a errores.
Las verás en C, Go, Rust, C#, Swift y otros. En lenguajes de bajo nivel son también la forma de describir cómo se organizan los datos en memoria, algo importante al leer formatos de archivo, protocolos de red o al comunicarte con hardware. Aprender a modelar tus datos con estructuras es uno de los primeros pasos antes de pasar a clases y orientación a objetos.
Confusiones frecuentes
Se confunde con la clase. En C no existe la clase y el struct solo guarda datos. En C# y Swift, la diferencia clave es que un struct es un tipo por valor (al asignarlo se copia) y una clase es un tipo por referencia (se comparten). En C++ la diferencia es mínima: sólo cambia la visibilidad por defecto. Otro error típico de principiante en C es olvidar que, al pasar un struct a una función, se copia entero; para modificar el original hay que pasar un puntero.
Preguntas frecuentes
¿Cuándo uso struct y cuándo clase?
Usa struct para datos pequeños y simples que se agrupan sin comportamiento complejo, como un punto o una moneda. Usa clase cuando necesites herencia, estado compartido o lógica más rica. Las reglas exactas dependen del lenguaje.
¿Cómo accedo a un campo de un struct?
Con el punto: producto.precio. En C, si tienes un puntero al struct, se usa la flecha: p->precio.
Fuentes consultadas
- Defining and Instantiating Structs (The Rust Programming Language)
- Tipos de estructura (referencia de C#) (Microsoft Learn)