Dominando Structs em C: Definição, Variáveis, Acesso e Exemplos Avançados
Dominando Structs em C
Aprenda a definir, criar e usar structs em C com exemplos claros e boas práticas.
O que é uma Struct em C?
Uma struct (abreviação de structure) é um tipo de dado composto que agrupa variáveis de diferentes tipos sob um único nome. É a base para criar estruturas de dados complexas em C.
Definindo uma estrutura
Antes de criar variáveis de um tipo struct, você deve definir o tipo. A palavra-chave struct introduz a definição:
struct nomeEstrutura { tipoDado membro1; tipoDado membro2; … }; Exemplo:
struct Pessoa { char nome[50]; int citNo; float salario; }; Isso cria um novo tipo chamado struct Pessoa. Agora você pode declarar variáveis desse tipo.
Criando variáveis de estrutura
Definir um tipo struct não aloca memória. Para trabalhar com ele, declare variáveis:
struct Pessoa { // membros }; int main() { struct Pessoa pessoa1, pessoa2, p[20]; return 0; } Alternativamente, combine a definição e a declaração de variáveis:
struct Pessoa { // membros } pessoa1, pessoa2, p[20]; pessoa1epessoa2são variáveis individuaisstruct Pessoa.pé um array de 20 instânciasstruct Pessoa.
Acessando membros da struct
Dois operadores acessam membros:
.– Operador de acesso a membro.->– Operador de membro para ponteiro para struct (coberto em tutorial separado).
Para ler ou modificar o salario de pessoa2:
pessoa2.salario Exemplo 1: Usando uma Struct em C
#include <stdio.h> #include <string.h> struct Pessoa { char nome[50]; int citNo; float salario; } pessoa1; int main() { strcpy(pessoa1.nome, "George Orwell"); pessoa1.citNo = 1984; pessoa1.salario = 2500; printf("Nome: %s\n", pessoa1.nome); printf("Nº Cidadania: %d\n", pessoa1.citNo); printf("Salário: %.2f", pessoa1.salario); return 0; } Saída
Nome: George Orwell Nº Cidadania: 1984 Salário: 2500.00
Observe que strcpy() copia a string para o array char de tamanho fixo porque o operador de atribuição não pode ser usado diretamente com arrays.
Usando typedef com Structs
A palavra-chave typedef cria um alias para um tipo, simplificando declarações:
typedef struct Distancia { int pes; float polegada; } distancias; int main() { distancias d1, d2; } Sem typedef, você escreveria:
struct Distancia d1, d2; Exemplo 2: Alias na prática
#include <stdio.h> #include <string.h> typedef struct Pessoa { char nome[50]; int citNo; float salario; } pessoa; int main() { pessoa p1; strcpy(p1.nome, "George Orwell"); p1.citNo = 1984; p1.salario = 2500; printf("Nome: %s\n", p1.nome); printf("Nº Cidadania: %d\n", p1.citNo); printf("Salário: %.2f", p1.salario); return 0; } Saída
Nome: George Orwell Nº Cidadania: 1984 Salário: 2500.00
Estruturas aninhadas
Structs podem conter outras structs, permitindo modelagem hierárquica de dados:
struct complexo { int imag; float real; }; struct numero { struct complexo comp; int inteiros; } num1, num2; Para definir imag de num2 como 11:
num2.comp.imag = 11; Exemplo 3: Structs aninhadas em ação
#include <stdio.h> struct complexo { int imag; float real; }; struct numero { struct complexo comp; int inteiro; } num1; int main() { num1.comp.imag = 11; num1.comp.real = 5.25; num1.inteiro = 6; printf("Parte Imaginária: %d\n", num1.comp.imag); printf("Parte Real: %.2f\n", num1.comp.real); printf("Inteiro: %d", num1.inteiro); return 0; } Saída
Parte Imaginária: 11 Parte Real: 5.25 Inteiro: 6
Por que usar Structs em C?
Suponha que você precise armazenar nome, número de cidadania e salário de uma pessoa. Sem structs, você criaria variáveis separadas para cada campo para cada pessoa, levando rapidamente a duplicação de código e confusão. Structs encapsulam dados relacionados em uma única unidade lógica, promovendo código mais limpo e manutenção mais fácil.
O que vem a seguir?
- Structs e ponteiros
- Passando structs para funções
Linguagem C
- C# Hello World – Criando Sua Primeira Aplicação C#
- Entendendo Palavras-chave e Identificadores em C#: Regras, Listas e Boas Práticas
- Domine Variáveis e Tipos de Dados Primitivos em C#: Guia Completo
- Operadores em C# – Guia Completo dos Operadores em C#
- Dominando Operadores Bitwise e Bit Shift em C#: Guia Abrangente
- Fundamentos de C#: Essenciais de Entrada e Saída
- Expressões, Instruções e Blocos em C#: Guia Completo com Exemplos Práticos
- Dominando Comentários em C#: Tipos, Boas Práticas e Documentação XML
- Dominando a Instrução Switch em C#: Sintaxe, Exemplos e Boas Práticas
- Operador Ternário em C#: Guia Conciso para Expressões Condicionais