Estruturas

Em C, uma estrutura é um tipo de dado que permite agrupar diferentes variáveis sob um único nome. Elas são usadas para representar objetos mais complexos, onde cada membro da estrutura armazena informações relacionadas. Os membros de uma estrutura podem ser de tipos de dados diferentes incluindo outras estruturas.

Declaração de estruturas

Para declarar uma estrutura em C, você usa a palavra-chave struct seguida do nome da estrutura. A estrutura em si é definida entre chavetas {} e pode conter uma ou mais variáveis, chamadas de membros da estrutura:

// Declaração de uma estrutura chamada "Pessoa"
struct Pessoa {
    char nome[50];
    int idade;
    float altura;
};

Criámos uma estrutura chamada “Pessoa” com três membros: “nome”, “idade” e “altura”.

Inicialização de estruturas

Uma vez criada a estrutura, podemos criar variáveis com ela e inicializar os seus membros com dados:

struct Pessoa pessoa1; // Declaração de uma variável do tipo "Pessoa"

// Atribuir valores aos membros individualmente
strcpy(pessoa1.nome, "Alice");
pessoa1.idade = 30;
pessoa1.altura = 1.75;

Outra forma de inicialização de uma estrutura é fazê-lo de forma direta;

struct Pessoa pessoa2 = {"Pedro", 25, 1.80};

Acesso aos membros de uma estrutura

Acedemos aos membros de uma estrutura com o operador “.”:

printf("Nome: %s\n", pessoa1.nome); // Acedendo ao membro "nome" de pessoa1

pessoa1.idade = 31; // Modificando o membro "idade" de pessoa1

Usando estruturas

As estruturas são frequentemente usadas para criar organizações mais complexas de dados. Por exemplo, podemos criar um array de estruturas para armazenar informações sobre várias pessoas:

struct Pessoa pessoas[3];

pessoas[0] = pessoa1;
pessoas[1] = pessoa2;

// Atribuindo valores à terceira pessoa
strcpy(pessoas[2].nome, "Charlie");
pessoas[2].idade = 28;
pessoas[2].altura = 1.70;

Estruturas e typedef

Podemos declarar uma estrutura usando a instrução typedef o que irá mais fácil a declaração de variáveis dessa estrutura:

// Declaração de uma estrutura chamada "Pessoa" com typedef
typedef struct Pessoa {
    char nome[50];
    int idade;
    float altura;
} Pessoa;

Depois, para declararmos variáveis com esta estrutura não temos de usar a palavra reservada struct:

Pessoa p = {"Pedro", 25, 1.80};