Inicializando Structs
Parte da seção Lógica e Fluxo do Journey de C da Coddy. Lição 42 de 63.
Embora você possa criar variáveis de struct e depois atribuir valores aos seus membros individualmente, C oferece uma maneira mais conveniente de definir valores iniciais. Você pode inicializar uma variável de struct no momento da declaração usando uma lista de inicialização delimitada por chaves.
A sintaxe para inicialização de uma struct é:
struct StructureName variableName = {value1, value2, ...};Usando nosso exemplo da struct Point, você pode declará-la e inicializá-la em uma única linha simples:
struct Point p1 = {10, 20};Isso cria uma variável Point chamada p1, com x definido como 10 e y definido como 20. Os valores na lista de inicialização são atribuídos aos membros da estrutura na ordem em que foram declarados na definição da estrutura.
Essa abordagem de inicialização não é apenas mais concisa do que atribuições separadas, mas também garante que sua struct comece com valores significativos, em vez de dados aleatórios sem sentido. Ela é particularmente útil quando você conhece os valores iniciais em tempo de compilação e quer criar variáveis de struct prontas para uso de forma eficiente.
Desafio
FácilCrie um programa em C que demonstre a inicialização de uma struct usando listas de inicializadores. Seu programa deve:
- Definir uma
structchamadaEmployeecom os seguintes membros:- Um inteiro
idpara armazenar o ID do funcionário - Um array de caracteres
departmentcom tamanho 15 para armazenar o nome do departamento - Um inteiro
yearsOfServicepara armazenar os anos de serviço - Um float
salarypara armazenar o salário do funcionário
- Um inteiro
- Criar três variáveis
Employeeusando listas de inicializadores com os seguintes dados:emp1: ID 101, departamento "Engineering", 5 anos de serviço, salário 75000.50emp2: ID 102, departamento "Marketing", 3 anos de serviço, salário 65000.25emp3: ID 103, departamento "Sales", 8 anos de serviço, salário 80000.75
- Imprimir as informações de cada funcionário neste formato exato:
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]
- Calcular e imprimir o salário total dos três funcionários no formato:
Total Salary: [total] - Calcular e imprimir a média de anos de serviço no formato:
Average Years of Service: [average]
Este desafio testa sua compreensão da inicialização de structs usando listas de inicializadores, nas quais você declara e inicializa variáveis de struct em uma única linha. Os valores na lista de inicializadores devem ser fornecidos na mesma ordem em que os membros foram declarados na definição da struct.
Seu resultado esperado deve 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.33Experimente você mesmo
#include <stdio.h>
// TODO: Defina a struct Employee aqui
int main() {
// TODO: Crie três variáveis Employee usando listas de inicialização
// TODO: Imprima as informações de cada funcionário
// TODO: Calcule e imprima o salário total e a média de anos de serviço
return 0;
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Fundamentos de Ponteiros
O que é um Ponteiro?Declarando PonteirosO Operador de Endereço (&)O Operador de Desreferência (*)Ponteiros NULLRecapitulação: Fundamentos de Ponteiros4Projeto: Utilitário de Texto Simples
Visão Geral do ProjetoContando Caracteres7Estruturas (structs)
O que é uma Struct?Declarando uma StructCriando Variáveis de StructAcessando Membros de uma StructInicializando StructsRecapitulação: Struct de Dados de Aluno2Ponteiros e Arrays
Nomes de Arrays como PonteirosElementos de Array - PonteirosAritmética de PonteirosComparando PonteirosRecapitulação: Percorrendo Arrays com Ponteiros5Ponteiros e Funções
Passagem por ValorPassando Ponteiros para FunçõesModificando Variáveis via PonteirosUm Exemplo Clássico: SwapPassando Arrays para FunçõesRecapitulação: Ponteiros como Argumentos3Arrays de Caracteres e Strings
Strings como Arrays de charO Terminador NuloEntrada de Strings com scanfUsando strlen()Usando strcpy()Usando strcat()Usando strcmp()Recapitulação: Funções Básicas de Strings6Gerenciamento de Memória
Memória Stack vs. HeapAlocação Dinâmica - malloc()Usando sizeof() para AlocaçãoVerificando Falhas de AlocaçãoLiberando Memória com free()Alocando com calloc()Recapitulação: Array Dinâmico9Projeto: Cadastro Simples de Contatos
Projeto: Definir a Struct de ContatoFunção para Criar um ContatoPratique por conta própria: Compilador de C online