Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Tipo struct
  2. Tipo enum
  3. Tipo union

Os tipos de dados struct, enum e union são tipos de dados mais complexos que são compostos de outros tipos de dados. Possuem a sintaxe semelhantes porém cada tipo possue suas próprias peculiaridades.

As operações básicas e uso desses tipos de dados podem ser vistos em C Básico: Struct, C Básico: Enum e C Básico: Union.

O tipo struct é um tipo de dado complexo que é composto de um ou mais membros de tipos de dados diferentes. Seu tamanho é variável devido ao fato de possuir membros com diferentes tipos.

O tipo de dado struct é principalmente utilizado para criar tipos de dados mais complexos e estrutura de dados.

Exemplo
struct nome_struct
{
  tipo_dado membro1;
  tipo_dado membro2;
  tipo_dado membroN;
}

O corpo de uma struct é delimitado por { e } e seus membros são separados por (;) e podem ser iniciados ou não. Os tipos do dados básicos, vetores, matrizes e ponteiros também podem ser utilizados.

O acesso aos membros de um struct é feita utilizando o operador (.) seguido do nome do membro, como pode ver visto na sintaxe abaixo:

Sintaxe
variavel_struct.nome_membro;

O tipo enum é utilizado para definir uma enumeração em que cada membro possui um nome e um valor inteiro associado. Os membros são separado por (,), devem estar delimitados por { e } e possui um valor inteiro associado.

Sintaxe
enum nome_enum
{
  nome_membro1,
  nome_membro2,
  nome_membroN;
}

Implicitamente, cada membro acima possui um valor associado. Por padrão, o primeiro membro está associado ao valor 0, o segundo membro, 1 e assim sucessivamente. Esses valores implícitos podem ser alterados de manualmente durante a declaração.

Caso um elemento tenha um valor atribuído em tempo de declaração, os elementos seguintes serão incrementados em 1.

Exemplo
enum nome_enum
{
  nome_membro1 = 10,
  nome_membro2, //11
  nome_membro3, //12
  nome_membroN; //
}

O acesso aos membros de um enum é feita utilizando o operadore (.) seguido do nome do do membro como pode ver visto na sintaxe abaixo:

Exemplo
variavel_enum.nome_membro;

O tipo union é um tipo de dado complexo que permite que um mesmo local de memória seja compartilhado armazenando diferentes tipos de dados.

Seus membros devem ser declarados entre { e } e separados por (;). A declaração de seus membros segue as mesmas regras para declaração de variáveis. Seu tamanho depende dos tipos de dados utilizados em sua composição.

O tipo de dados union é principalmente utilizado para economizar memória.

Sintaxe
union nome_union
{
  tipo_dado membro1;
  tipo_dado membro2;
  tipo_dado membroN;
}

O acesso aos membros de uma union é feita utilizando o operadore (.) seguido do nome do do membro como pode ver visto na sintaxe abaixo:

Sintaxe
variavel_enum.nome_membro

Como um union agrupa vários tipos de dados em apenas um local de memória, é necessário trabalhar com um membro union por vez, ou seja, a cada atribuição de valor a um determinado membro, a utilização do mesmo deve ser feito em seguida.

Sintaxe
variavel_union.nome_membro1 = valor1 //valor descartado
variavel_union.nome_membro2 = valor2 //valor válido para utilização

Caso seja feita a atribuição de valores para todos os membros de uma union de forma sequencial, apenas o último valor atribuído será válido. Caso outro membro seja acessado, dados inválidos serão retornados.

  1. 02/09/2025 - revisão 3 - Ajustes: pontuais, target de links e sintaxes
  2. 04/10/2024 - revisão 2 - Ajustes gramaticais pontuais;
  3. 27/09/2023 - revisão 1 - Correção em link/referências, erros gramaticais e outros
  4. 19/05/2023 - versão inicial