Inicialización de structs
Parte de la sección Logic & Flow del Journey de C de Coddy — lección 42 de 63.
Si bien puedes crear variables de tipo struct y luego asignar valores a sus miembros individualmente, C proporciona una forma más conveniente de establecer valores iniciales. Puedes inicializar una variable struct en el momento de la declaración utilizando una lista de inicializadores encerrada entre llaves.
La sintaxis para la inicialización de estructuras es:
struct StructureName variableName = {value1, value2, ...};Usando nuestro ejemplo de struct Point, puedes declararlo e inicializarlo en una sola línea limpia:
struct Point p1 = {10, 20};Esto crea una variable Point llamada p1 con x establecido en 10 e y establecido en 20. Los valores en la lista de inicializadores se asignan a los miembros de la estructura en el orden en que fueron declarados en la definición de la estructura.
Este enfoque de inicialización no solo es más conciso que las asignaciones por separado, sino que también garantiza que su struct comience con valores significativos en lugar de datos basura aleatorios. Es particularmente útil cuando conoce los valores iniciales en tiempo de compilación y desea crear variables struct listas para usar de manera eficiente.
Desafío
FácilCrea un programa en C que demuestre la inicialización de estructuras utilizando listas de inicializadores. Tu programa debe:
- Define una
structllamadaEmployeecon los siguientes miembros:- Un entero
idpara almacenar el ID del empleado - Un arreglo de caracteres
departmentcon tamaño 15 para almacenar el nombre del departamento - Un entero
yearsOfServicepara almacenar los años de servicio - Un flotante
salarypara almacenar el salario del empleado
- Un entero
- Crea tres variables
Employeeutilizando listas de inicializadores con los siguientes datos:emp1: ID 101, departamento "Engineering", 5 años de servicio, salario 75000.50emp2: ID 102, departamento "Marketing", 3 años de servicio, salario 65000.25emp3: ID 103, departamento "Sales", 8 años de servicio, salario 80000.75
- Imprime la información de cada empleado en este formato exacto:
Employee 1:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]Employee 2:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]Employee 3:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]
- Calcula e imprime el salario total de los tres empleados en el formato:
Total Salary: [total] - Calcula e imprime el promedio de años de servicio en el formato:
Average Years of Service: [average]
Este desafío pone a prueba tu comprensión de la inicialización de estructuras mediante listas de inicializadores, donde declaras e inicializas variables de estructura en una sola línea. Los valores en la lista de inicializadores deben proporcionarse en el mismo orden en que se declararon los miembros en la definición de la estructura.
Tu salida esperada debe ser:
Employee 1:
ID: 101
Department: Engineering
Years of Service: 5
Salary: 75000.50
Employee 2:
ID: 102
Department: Marketing
Years of Service: 3
Salary: 65000.25
Employee 3:
ID: 103
Department: Sales
Years of Service: 8
Salary: 80000.75
Total Salary: 220001.50
Average Years of Service: 5.33Hoja de referencia
Puedes inicializar una variable de estructura en el momento de la declaración utilizando una lista de inicializadores encerrada entre llaves:
struct StructureName variableName = {value1, value2, ...};Ejemplo con una estructura Point:
struct Point p1 = {10, 20};Los valores en la lista de inicializadores se asignan a los miembros de la estructura en el orden en que fueron declarados en la definición de la estructura. Este enfoque es más conciso que las asignaciones por separado y garantiza que tu estructura comience con valores significativos en lugar de datos basura aleatorios.
Pruébalo tú mismo
#include <stdio.h>
// TODO: Definir la estructura Employee aquí
int main() {
// TODO: Crear tres variables Employee usando listas de inicialización
// TODO: Imprimir información para cada empleado
// TODO: Calcular e imprimir el salario total y el promedio de años de servicio
return 0;
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Logic & Flow
1Fundamentos de Punteros
¿Qué es un puntero?Declaración de punterosEl operador de dirección (&)El operador de desreferencia (*)Punteros NULLResumen: Conceptos básicos de punteros4Proyecto: Utilidad de texto simple
Descripción general del proyectoContar caracteres7Estructuras (structs)
¿Qué es un struct?Declaración de un structCreación de variables de tipo structAcceso a los miembros de un structInicialización de structsResumen: Struct de datos de estudiantes2Punteros y Arrays
Nombres de Arrays como PunterosElementos de un Array - PunterosAritmética de PunterosComparación de PunterosResumen: Recorrido de Arrays con Punteros5Punteros y funciones
Paso por valorPasar punteros a funcionesModificar variables mediante punterosUn ejemplo clásico: Intercambio (Swap)Pasar arrays a funcionesResumen: Argumentos de punteros a funciones3Arreglos de caracteres y cadenas
Cadenas como arreglos de charEl terminador nuloEntrada de cadenas con scanfUso de strlen()Uso de strcpy()Uso de strcat()Uso de strcmp()Resumen: Funciones básicas de cadenas