Menu
Coddy logo textTech

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.

challenge icon

Desafío

Fácil

Crea un programa en C que demuestre la inicialización de estructuras utilizando listas de inicializadores. Tu programa debe:

  1. Define una struct llamada Employee con los siguientes miembros:
    • Un entero id para almacenar el ID del empleado
    • Un arreglo de caracteres department con tamaño 15 para almacenar el nombre del departamento
    • Un entero yearsOfService para almacenar los años de servicio
    • Un flotante salary para almacenar el salario del empleado
  2. Crea tres variables Employee utilizando listas de inicializadores con los siguientes datos:
    • emp1: ID 101, departamento "Engineering", 5 años de servicio, salario 75000.50
    • emp2: ID 102, departamento "Marketing", 3 años de servicio, salario 65000.25
    • emp3: ID 103, departamento "Sales", 8 años de servicio, salario 80000.75
  3. 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]
  4. Calcula e imprime el salario total de los tres empleados en el formato: Total Salary: [total]
  5. 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.33

Hoja 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;
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Logic & Flow