Manejo de Estructuras (Struct) en Lenguaje C
Las fuentes clasifican los tipos de datos en Simples (Numéricos, Lógicos, Alfanuméricos) y Estructurados. Entre los tipos de datos estructurados se encuentran los arreglos y las estructuras o registros.
Un arreglo permite almacenar un conjunto de datos del mismo tipo bajo un único nombre. En contraste, una estructura (o registro) es una colección de variables, que pueden ser de distinto tipo, agrupadas bajo un mismo nombre.
El propósito principal de usar estructuras es organizar información relacionada para facilitar su manejo integral. Por ejemplo, los datos de una persona (nombre, apellido, edad, estado civil) pueden ser de diferentes tipos, y una estructura permite agruparlos todos bajo el nombre persona.
Definición de una Estructura en C
Para definir una estructura en C, se utiliza la palabra reservada struct. La definición comienza con struct, seguida generalmente de un nombre para la estructura y luego un bloque de campos encerrado entre llaves {}.
struct nombre_estructura {
tipo_dato_1 campo_1;
tipo_dato_2 campo_2;
// ... más campos
};
El punto y coma al final es importante. Las fuentes comparan la sintaxis del pseudocódigo y C para definir un registro:
- Pseudocódigo: campos agrupados por tipo.
- Lenguaje C: campos separados por punto y coma.
Una estructura típicamente se define fuera de cualquier función (ámbito global) para que esté disponible en múltiples funciones.
Declaración de Variables de Tipo Estructura (Local)
Una vez que se ha definido una estructura, se pueden declarar variables de ese tipo dentro de una función:
#include <stdio.h>
struct Punto {
int x;
int y;
};
int main() {
struct Punto p1;
struct Punto p2, p3;
return 0;
} Inicialización de Estructuras
Es posible asignar valores iniciales a los campos al momento de declararlos:
struct Fecha {
int dia;
int mes;
int anio;
};
int main() {
struct Fecha nacimiento = {15, 7, 1990};
struct Fecha hoy = {28, 11}; // anio se inicializa a 0
return 0;
}Acceso a los Campos de una Estructura
Para acceder a un campo específico se utiliza el operador punto ..
- Asignación:
persona.edad = 25;
- Asignación:
- Entrada:
scanf("%d", &persona.edad);
- Entrada:
- Salida:
printf("%d", persona.edad);
- Salida:
Estructuras Anidadas y Arreglos de Estructuras
Las estructuras pueden contener otras estructuras como campos. También se pueden crear arreglos de estructuras:
struct Direccion {
char calle[50];
int numero;
};
struct Persona {
char nombre[50];
int edad;
struct Direccion domicilio;
};Entorno de Desarrollo y Práctica
El código en C se desarrolla usando IDEs como DEV-C++ o Code::Blocks. Se recomienda usar comentarios explicativos sobre el propósito del programa, autor, fecha, etc.
Sugerencias de Ejercicios Prácticos
- Crear una estructura
Puntoconxey. Asignar valores y mostrarlos. - Crear una estructura
Fechay pedir datos al usuario. - Crear un arreglo de
Personay manejar varios registros con bucles. - Crear una estructura anidada
Personacon campoDireccion. - Crear una función que reciba una estructura
Puntoy calcule distancia al origen.

