Estruturas Aninhadas

bubble sort

Oi pessoal! Tudo certo? Espero que sim. No meu último artigo eu expliquei sobre Vetor de Registros em Linguagem C. Recordando, registros é o nome do recurso computacional, sendo que cada linguagem de programação pode dar um nome diferente. No caso da linguagem C, chama-se Estruturas. Bom, hoje eu vou mostrar para vocês como trabalhar com Estruturas Aninhadas, isto é, com usar uma estrutura dentro de outra. Vocês vão ver que é bem simples e também muito útil. Vamos começar!

Estruturas Aninhadas

Uma estrutura aninhada é basicamente uma estrutura dentro de outra, isto é, uma estrutura contida em outra ou uma estrutura que pode ser acessada por outra. Há duas formas de implementar estruturas aninhadas. A primeira forma é colocar uma estrutura dentro da outra, literalmente, como apresentado no exemplo a seguir:

Observe as linhas de 06 a 14. Nesse trecho é definida uma estrutura que recebe o nome de Aluno e, dentro dela, outra estrutura com os membros dia, mês e ano. Essa estrutura está nas linhas 10, 11 e 12, note que ela não tem nome, e não é necessário que tenha, pois ela está contida dentro da estrutura Aluno. Podemos dizer que temos uma estrutura externa e uma estrutura interna, as quais são respectivamente Aluno e data. 

Os membros da estrutura interna são acessados da mesma forma que a estrutura externa, isto é, diretamente. Veja todas as linhas em que é necessário acessar esses membros, todos eles são acessados diretamente pelo nome da variável da Estrutura. Portanto, a sintaxe para trabalhar com estruturas aninhadas nessa forma é:

E para acessar os membros, a sintaxe é:

A outra forma é você declarar a estrutura_1 antes e, na  estrutura_2, declarar uma variável da estrutura 1, conforme apresenta o exemplo a seguir:

Neste exemplo as estruturas são declaradas separadamente. As estruturas que serão utilizadas dentro de outras devem ser declaradas antes. Se você declarar uma estrutura_x e tentar utilizá-la dentro de uma estrutura_w, e a estrutura_x não tiver sido declarada antes, ao compilar o programa um erro será apontado. Assim, em nosso exemplo, declaramos antes a estrutura data, que será usada dentro da estrutura aluno. Isso é notado nas linhas 6 a 16.

A forma de acesso aos membros da estrutura Aluno agora é um pouco diferente. Dentro da estrutura Aluno é criada uma variável do tipo da estrutura Data, que é datNasc. Esse nome, datNasc, é o nome que deverá ser utilizado para acessar os seus membros. Mas não somente ele, é necessário usar em conjunto com o nome da estrutura aluno, como mostram as linhas 23, 24 e 25.

Dessa forma a sintaxe é a seguinte:

Vetores de Estruturas Aninhadas

Para usarmos vetores de estruturas, com estruturas aninhadas, o procedimento é praticamente o mesmo, a única coisa que realmente vai mudar é a inserção da posição do vetor. O exemplo a seguir demonstra como fazer isto:

Conclusão

Estruturas aninhadas são ótimas para reaproveitamento de código pois, ao invés de criar uma única estrutura com muitos membros, e que nem sempre serão acessados, várias estruturas podem ser criadas, de forma ainda mais abstraída, e reutilizadas em diversas partes do seu projeto. 

Portanto, estruturas aninhadas é mais um recurso muito útil, disponível em suas mãos, para que você consiga resolver o seu problema de forma ainda mais eficiente e modularizada.

Não entendeu alguma coisa? Deixe ali nos comentários, que eu responderei assim que possível, tudo bem? Até a próxima pessoal.

Outros artigos da série

<< Vetor de Struct
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Software » Estruturas Aninhadas
Comentários:
Notificações
Notificar
guest
7 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Yago Reis
Yago Reis
05/12/2019 08:57

Olá. Parabéns pelo artigo, me ajudou muito e tenho certeza que ajudou muitas pessoas.

Só fiquei com uma dúvida. Na parte dos scanf, você coloca da seguinte maneira:
scanf("%d%*c", &aluno_especial[i].codigo);

Gostaria de saber o que é esse "%*c" depois do "%d", pois, quando realizei um exercicio desses eu não usei isso e o programa rodou. Obrigado!

Alexandro Vieira Ferreira
Alexandro Vieira Ferreira
14/04/2019 17:23

Olá, eu preciso armazenar 10 nomes de pessoas 10 vezes.
Por exemplo grupo1 com 10 nomes
grupo2 com 10 nomes...
Eu teria que criar 10 structs?

Laercio Barbosa
Laercio Barbosa
03/10/2017 13:51

Olá, Elaine.
Não ficou claro, para mim, a utilidade da primeira forma de estruturas aninhadas. Já a segunda forma é, para mim, um tanto óbvia. Poderia citar exemplos onde a aplicação da primeira forma seja útil?

Obrigado

Willians de Almeida Vieira
Willians De Almeida
28/09/2017 20:03

Excelente artigo.

Talvez você goste:

Séries



Outros da Série

Menu

WEBINAR
 
Sensores e soluções para aplicações em indústria inteligente

Data: 13/08 às 15:00h - Apoio: STMicroelectronics
 
INSCREVA-SE AGORA »



 
close-link